Имя: Пароль:
IT
Админ
Вопросы по бат файлам.
,
0 ILM
 
гуру
02.08.18
08:32
через Winrs запускается батфайл на сервере.
1. Сначала архива базы 1С(рабочая).
2. Создание базы 1С(копия) из архива.
3. Запуск 1С(копия) с обработкой и расчетами. Потом выгрузка результатов и закрытие базы.
4. Запуск 1С(рабочая) с загрузкой результатов и закрытие.

В батфайле команда start /wait не дожидается окончания запуска 1С программы, как сделать чтобы ждала окончания?
Пробовал через команду taskkill вот так:

:loop
ping -n 5 127.0.0.1 >nul
tasklist|find /i "1С8.exe">nul && goto loop

но имя процесса "1C8.exe" и их может быть много, а мне нужен только тот который был запущен на 3-м шаге.

Как сделать чтобы дождаться окончания 1С?
1 Asmody
 
02.08.18
08:37
(0) убрать start /wait вообще?
2 Локи-13
 
02.08.18
08:38
используй PowerShell
3 ILM
 
гуру
02.08.18
08:41
(1) Что добавить вместо
4 ILM
 
гуру
02.08.18
08:42
(2) Это сервер, а админы не ставят.
5 RKx
 
02.08.18
08:49
сервер sql?
6 spectre1978
 
02.08.18
08:51
(0) гуевые приложения, по-моему, бесполезно через start /wait запускать, это только для консольных прокатывает. Для создания DTшника я делал не на бате, а на VBS. Делал следующим образом - запускал 1С, а потом в цикле пытался этот самый dt-файл открыть эксклюзивно через паузу секунд в 10. Когда открывать удавалось - значит, я полагал что 1С завершила свои манипуляции, и можно делать дальнейшие действия. Как-то так.
7 spectre1978
 
02.08.18
08:57
вы можете сделать примерно также - создать из обработки какой-то флаговый файл, из батника поотслеживать его присутствие (там же есть IF EXIST конструкция?), а как будет удален - так продолжить...
8 ILM
 
гуру
02.08.18
09:57
(5) Да
9 ILM
 
гуру
02.08.18
10:04
(1) А что использовать?
10 sitex
 
naïve
02.08.18
10:20
(0) База какая Файловая ,Клиент серверная ? SQL?
11 spectre1978
 
02.08.18
10:54
(9) в общем случае я не вижу, как средствами батника решить вашу задачу. Средствами WinAPI запустить и отследить работу запущенного процесса можно, но это надо на нормальном языке прогу писАть. А на скриптах - проще всего через занятие файлов.
12 Cool_Profi
 
02.08.18
10:55
(4) Сервер какой? В соврменных PS ставится дефолтом
13 YaFedor
 
02.08.18
10:55
Используй  скрипт VBS
14 ILM
 
гуру
02.08.18
15:30
Теперь другая проблема, 1с отработав удаленно остаётся висеть на удаленном компе. Единственный способ сработал через wmi. Подскажите, как вы на удаленном компе запускаете 1с.
15 ILM
 
гуру
02.08.18
15:31
Есть ли способ сделать без расписания?
16 ILM
 
гуру
02.08.18
15:32
(13) можно пример удаленного запуска?
17 Cool_Profi
 
02.08.18
15:34
(16) psexec
18 spectre1978
 
02.08.18
19:53
(14) В чем проблема, в том что не завершается? Если вы запускаете какой-то регламент вроде выгрузки DT, то, если это задать через комстроку, она, мне кажется, сама завершится, как закончит свои дела. А если вы выполняете обработку - то ЗавершитьРаботуСистемы же...
19 Доминошник
 
02.08.18
20:22
(0) А что мешает в 3-м шаге создавать флаг-файл с содержимым (именем) типа "Хозяин, я сегодня всё сделал, можно продолжать"?
И искать можно, по-моему, не только по имени процесса, но и по пользователю, запустившему процесс.
Соответственно - как вариант - запуск шага 3 от другого пользователя.
20 PuhUfa
 
02.08.18
20:29
(0) а что это за такие "обработкой и расчетами" что требует такой заморочки?
21 Сияющий в темноте
 
03.08.18
12:31
Через VbScripy обьект Wscript.Shell и его команда run прекрасно дожидается того,что нужно,и даже окна не создает.
ваша задача решается на ура через него.
22 spectre1978
 
03.08.18
16:08
(21) Только для консольника (console application). Если приложение GUI, тогда, насколько я помню, нет. Выполняется моментально и переходит на следующую строку кода.
23 Вафель
 
03.08.18
16:09
ты запускаешь не ту 1ску - поэтому и не ждет.
запускай прямо нужный exe-шник
24 Вафель
 
03.08.18
16:10
типа такого
"C:/1CData/8.3.9.2170_x64/bin/1cv8.exe";
25 spectre1978
 
03.08.18
16:18
(24) да, верно, так работает. Значит, дело в том что там запускается стартер, который стартует другой процесс и завершается, чем намахивает run. А того, другого процесса run уже дожидаться не обязан.
26 spectre1978
 
03.08.18
16:19
может, и со start /wait тогда прокатит?
27 Вафель
 
03.08.18
16:19
тогда start /wait не нужне вообще ибо и так все ждется
28 spectre1978
 
03.08.18
16:22
(27) см. (0). Прокатывает, кстати.
start /wait /D "C:\Program Files (x86)\1cv8\8.3.11.2867\bin\" 1cv8.exe
echo Тру-ля-ля
Надпись появляется после того как закрыли 1С
29 spectre1978
 
03.08.18
16:23
значит, я ошибался и дело не в консольниках
30 ILM
 
модератор
03.08.18
16:25
Решил через планировщик, остальными способами не получалось, так как всегда висели или службы или cmd или 1С или другие программы.

Интерактивно получалось всяко разно, а удаленно только через планировщик.
31 ILM
 
модератор
03.08.18
16:31
Если удаленно, то в батниках и консоли нормально работают утилиты командной строки и скрипты всякие, а что посложнее или остается висеть, или требуют интерактивного участия.