Задание Control-M не заканчивается после завершения .bat

У меня есть файл .bat, который сопоставляет сетевой диск, запускает программу MS Access, затем удаляет сопоставленный диск и завершает работу. Когда я запускаю его через Control-M, .bat запускается и завершается, но задание в Control-M никогда не заканчивается. Я пробовал несколько вещей, чтобы завершить файл, чтобы отправить Control-M код выхода, но, похоже, ничего не работает. Ниже приведен код:

@echo off
net use w: [path]
"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "Y:\MSAccess.mdb"
net use w: /delete

После этого кода я попробовал следующие команды:
exit
_exit 0
timeout /T 10

Что бы я ни пытался, Control-M никогда не узнает, что работа завершена. sysout от Control-M также не показывает какой-либо код выхода, отправляемый обратно.


person peel    schedule 04.04.2013    source источник


Ответы (4)


Control-M, вероятно, ожидает завершения всех процессов, запущенных под ним, прежде чем выйти из самого задания. В вашем случае MSACCESS все еще работает, когда достигается конец BAT, поэтому он предотвращает завершение задания Control-M.

Если у вас есть BAT, чтобы дождаться завершения MSACCESS,

net use w: [path]
start /b /wait "" "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "Y:\MSAccess.mdb"
net use w: /delete

это может облегчить (по крайней мере, статически) вашу проблему

person PA.    schedule 04.04.2013
comment
Это не сработало. Кажется, проблема в том, что база данных Access не работает, когда .bat запускается через Control-M. Я могу войти на сервер как владелец, настроенный в Contorl-M, и он работает нормально, но по какой-то причине он не запускается, когда это делает Control-M. Я не эксперт по Control-M, поэтому не знаю разницы между Contorl-M, выполняющим задание от имени кого-то, и фактическим выполнением задания от их имени. Мысли? - person peel; 05.04.2013

После еще нескольких тестов и исследований проблема возникла ранее в .bat. База данных MS Access никогда не открывалась и не запускалась. Поэтому, поскольку он никогда не запускался, он никогда не заканчивался и не отправлял код ошибки. Я исследую, почему база данных MS Access не работает сейчас, что может привести к другому вопросу.

person peel    schedule 15.04.2013

У меня такая же проблема. Я решил свою проблему, добавив следующее в конец файла bat:

exit /b %errorlevel%
person Dany    schedule 21.08.2019

Для пакетных сценариев Windows добавьте exit /b %errorlevel% в конец файла. Это поможет обнаружить, что скрипт отработал правильно и контрольная работа завершится/завершится.

person dhilip77    schedule 28.08.2019