Показать полную графическую версию : [решено] Автоматизация запуска на удаленных машинах
На сервере 1 есть 4 bat-файла для серверов 2,3,4,5
которые запускают на них некоторые процедуры с файлами (посредством psexec).
Там же на сервере 1 есть 5-ый bat-файл который нужно запустить только после того как отработают первые 4.
Cейчас приходится запускать первые 4 файла (один за другим) что бы выполнялись параллельно, а затем, визуально убедившись
в том, что они отработали, уже запускать файл 5.
Можно ли все это сделать 1 BAT файлом?
Eug.., можно попробовать так:
@echo off
setlocal enableextensions enabledelayedexpansion
title Waiting child batches...
start "Working with Server 0001..." 0001.cmd ^& exit
start "Working with Server 0002..." 0002.cmd ^& exit
start "Working with Server 0003..." 0003.cmd ^& exit
start "Working with Server 0004..." 0004.cmd ^& exit
:Repeat
ping.exe -n 2 localhost >nul
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq Working with Server 000*" | find.exe /i "cmd.exe") && goto :Repeat
title Now this batch working...
echo Здесь Ваш код
pause
endlocal
exit /b 0
Начало отличное - стартуют все 4 cmd-шника оновременно и пока psexec соединяется, окна действительно называются
"Working with ..." и основной job ждет, но как только psexec соеденился и начинается выполнение cmd файлов на самих
серверах, названия окон меняются на \\имя_сервера: путь_к_cmd_файлу, и основной job сразу же стартует (не дождавшись
окончания рабрты cmd-шников на сервере).
Попробовал вставить строку
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq Working with Server 000*" | find.exe /i "cmd.exe") && goto :Repeat
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq \\192б168*" | find.exe /i "cmd.exe") && goto :Repeat
- не помогает...
О! Вот так - работает! Респект!
@echo off
setlocal enableextensions enabledelayedexpansion
title Waiting child batches...
start "Working with Server 0001..." 0001.cmd ^& exit
start "Working with Server 0002..." 0002.cmd ^& exit
start "Working with Server 0003..." 0003.cmd ^& exit
start "Working with Server 0004..." 0004.cmd ^& exit
:Repeat
ping.exe -n 2 localhost >nul
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq Working with Server 000*" | find.exe /i "cmd.exe") && goto :Repeat
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq \\192.168.*" | find.exe /i "cmd.exe") && goto :Repeat
title Now this batch working...
echo Здесь Ваш код
pause
endlocal
exit /b 0
но как только psexec соеденился и начинается выполнение cmd файлов на самих
серверах, названия окон меняются на \\имя_сервера: путь_к_cmd_файлу, и основной job сразу же стартует (не дождавшись
окончания рабрты cmd-шников на сервере). »
О! Вот так - работает! »
Ну и славненько ;). На самом «PsExec.exe» я не проверял сетевую работу по причине отсутствия на тот момент доступа к самой сети.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC