Как приостановить выполнение пакетного сценария, пока другой пакетный сценарий выполняется на другом сервере? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть a.bat в server A и b.bat в server B.

a.bat звонки b.bat с использованием .

Теперь проблема в том, что выполнение a.bat не ожидает завершения b.bat, и это влияет на результат последовательной команды, присутствующей в a.bat.

Это команда, которую я имею в a.bat (из server A) , которая вызывает b.bat, (с сервера B) :

WMIC /NODE:"<IP of server A>" /user: <user ID> /password: <password> process call create "<path to b.bat in server B>\b.bat"

1 Ответ

0 голосов
/ 29 апреля 2019

Существует почти неизвестная команда waitfor .

In a.bat Ожидание сигнала:

WMIC /NODE:"<IP of server A>" /user: <user ID> /password: <password> process call create "<path to b.bat in server B>\b.bat"
waitfor "ClientReady"
echo Client is ready.

In b.bat отправить сигнал:

rem do what's to do
waitfor /si "ClientReady"

waitfor /si signal отправляет сигнал всем компьютерам в сети (пока не объявлено иное), а waitfor signal просто ожидает поступления сигнала (неограниченное время, пока не объявлено иное). Опции см. В waitfor /?и переключатели.

Примечание: имя сигнала чувствительно к регистру.

Для тестирования вам не нужны два компьютера, два окна cmd на одном компьютере тоже работают (онив той же сети по умолчанию)

Я настоятельно рекомендую использовать переключатель /t imeout, если b.bat не удастся.По истечении времени %errorlevel% будет 1, иначе 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...