Вход | Регистрация


1С:Предприятие ::

Метки: 

Как заставить bat-файл дождаться окончания выгрузки 1С

Я
   AlexYurg
 
06.08.18 - 17:38
Есть пакетный файл, содержащий строку вида

"C:\...\1cv8.exe" DESIGNER /S Сервер\База /N ... /P ... /DumpIB File.DT

В этом месте необходимо дождаться, когда закончится выгрузка в File.DT, т.к. дальше там идет загрузка из этого файла в другую базу.

На платформе 1С 8.2 (8.2.19.130) это работало без проблем, а на 8.3 (8.3.12.1567) проскакивает на следующую строку батника, т.е. пытается грузить из файла, который еще не сформирован.

Вопрос: почему так происходит и как заставить батник дождаться окончания выгрузки?
 
  Рекламное место пустует
   SilentMan
 
1 - 06.08.18 - 17:42
start /wait ?
   AlexYurg
 
2 - 06.08.18 - 17:44
(1) Сейчас попробую...
   AlexYurg
 
3 - 06.08.18 - 17:47
(1) Ошибка: "Не удается найти DESIGNER ..."
Я уже прочно забыл эти батники, как там писать start?
   AlexYurg
 
4 - 06.08.18 - 17:50
Посмотрел синтаксис START, похоже надо делать несколько батников. Как-то это некрасиво.

Другие мысли есть у кого-нибудь?
   Локи-13
 
5 - 06.08.18 - 17:50
напиши на powershell
   Локи-13
 
6 - 06.08.18 - 17:52
$EXE="C:\Program Files (x86)\1cv8\8.3.10.2699\bin\1cv8.exe"
$arglist = @("DESIGNER", "/S $SERVERNAME\$IBNAME", "/N $ADMINNAME", "/P $ADMINPASS", "/UpdateDBCfg")
& $EXE $arglist | Out-Null
   alkras
 
7 - 06.08.18 - 17:54
setlocal enabledelayedexpansion 
set count=0 
set month=1%date:~3,2% 
set /a month-=100 
 
for %%a in (Январь Февраль Март Апрель Май Июнь Июль ^ 
Август Сентябрь Октябрь Ноябрь Декабрь) do ( 
set /a count+=1 
if !count! equ %month% (set m=%%a))
md "i:\BaseCopy\%m%\uat\"

echo Текущий месяц %m%

set v8exe="c:\Program Files (x86)\1cv82\8.2.19.83\bin\1cv8.exe"
set AdminUser=/N"UserAdmin"   /P"PassAdmin"  /WA-
set FileInformation=i:\BaseCopy\%m%\error_log.txt
date /t >> %FileInformation%
time /t >> %FileInformation%


rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem Создание копии UAT

set DataBaseName="Server/uat"
set DataBase=/S%DataBaseName%
set DataBaseName>>%FileInformation% 

rem Завершение работы пользователей
start "" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /C"ЗавершитьРаботуПользователей" /UC"ПакетноеОбновлениеКонфигурацииИБ" /Out%FileInformation% -NoTruncate /DisableStartupMessages

set filebak="i:\BaseCopy\%m%\uat\%date% %time:~-11,2%-%time:~-8,2%-%time:~-5,2% SQL УАТ.dt"
start "" /wait %v8exe% CONFIG %DataBase% %AdminUser% /DumpIB%filebak% /UC"ПакетноеОбновлениеКонфигурацииИБ" /Out%FileInformation% -NoTruncate

rem Разрешение работы пользователей
start "" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /C"РазрешитьРаботуПользователей" /UC"ПакетноеОбновлениеКонфигурацииИБ" /Out%FileInformation% -NoTruncate /DisableStartupMessages
   alkras
 
8 - 06.08.18 - 17:55
Раньше пользовался таким скриптом. Все корректно работало с ежедневным сохранением в нужные папки.
   AlexYurg
 
9 - 06.08.18 - 17:55
(6), (7) Круто! Спасибо, попробую!
   Cthulhu
 
10 - 06.08.18 - 18:30
(4): да норм.
никто же не мешает из твоего батника запилить какие надо ( echo > / echo >> ) потом запустить их потом подтереть за собой...
 
  Рекламное место пустует
   Сияющий в темноте
 
11 - 06.08.18 - 22:42
И чем VbScript не угодил?
там даже обьект есть для запуска без окошка и ожидания завершения
   AlexYurg
 
12 - 07.08.18 - 09:20
(11) Вся проблема как раз в ожидании завершения.
Нужно, чтобы было ожидание, и в 8.2 оно было, а в 8.3 пропало.
Из-за этого и возник вопрос, как вернуть ожидание завершения.
   spectre1978
 
13 - 07.08.18 - 09:24
(12) оно не пропало. Скорее всего проблема в том, что запускается стартер, который запускает другой процесс и выходит. Нужно посмотреть, что происходит при запуске, какие процессы рожаются. И запускать именно конечный, последний процесс, а не то что прописано в ярлыке.
   AlexYurg
 
14 - 07.08.18 - 09:33
(13) Нет, не стартер. Запускается напрямую 1cv8.exe из нужной папки. Такой же процесс появляется в памяти.
Пробовал запускать 1cv8s.exe - та же беда - не ждет.
   Мыш
 
15 - 07.08.18 - 09:36
(14) Асинхронный вызов нельзя сделать?
   spectre1978
 
16 - 07.08.18 - 09:38
Вопросы по бат файлам.

start /wait /D "C:\Program Files (x86)\1cv8\8.3.11.2867\bin\" 1cv8.exe
echo Тру-ля-ля
Надпись появляется после того как закрыли 1С
   spectre1978
 
17 - 07.08.18 - 09:39
у меня тоже были подобные проблемы, но в конце концов выяснилось что дело было в стартере. В случае с выгрузкой есть еще один вариант с попыткой открытия dt-файла - в приведенном топике я об этом писал. Когда откроется - значит, 1С закончила работу. Я такое на VBS делал.
   Serg_1960
 
18 - 07.08.18 - 09:55
Start "Backup" /Wait "C:\Program Files (x86)\1cv8\common\1cestart.exe"...
:repeat
TimeOut /T 10
tasklist | find "1cv8.exe"
if errorlevel 0 GOTO repeat
   mistеr
 
19 - 07.08.18 - 09:59
(18) Ничего, что еще кто-то может внезапно запустить 1С для своих целей?
   mistеr
 
20 - 07.08.18 - 10:00
(14) Возьми Process Explorer да посмотри, кто кого запускает.
   Serg_1960
 
21 - 07.08.18 - 10:34
(19) Не принципиально при определенных условиях. Например, когда батник работает ночью, когда пользователей нет и/или некому запустить сеанс на конкретном компе.
   Мыш
 
22 - 07.08.18 - 10:55
И вообще агента Смита запустить можно и на каком-нибудь питоне автоматизировать.
   AlexYurg
 
23 - 07.08.18 - 11:33
Джентльмены, произошло чудо!
Ожидание вернулось само собой.
В результате упражнений с батником обнаружилось, что поведение 1С-ки вернулось к тому, что было в 8.2, т.е. батник сам дожидается окончания выгрузки. Без всяких start /wait и прочих хитростей.
Что это было - не понятно. Глюк, одним словом.
Всем спасибо за обсуждение и советы!



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует