|
Вопросы по бат файлам. | ☑ | ||
---|---|---|---|---|
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
|
Если удаленно, то в батниках и консоли нормально работают утилиты командной строки и скрипты всякие, а что посложнее или остается висеть, или требуют интерактивного участия.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |