我有一些批处理文件需要在位于同一网络上的 6 台远程服务器上按以下顺序异步运行,并且所有服务器都具有共同的用户名和密码才能登录。我已将Master.bat文件放在 Server5 上。
STEP1 :Run file1.bat on 4 different servers (Server1, Server2, Server3, Server4) in parallel
STEP2 :Run file2.bat on 2 different servers (Server5, Server6) in parallel
STEP3 :Run file3.bat on Server5 (which is local server in my case as Master.bat is on Server5 only )
STEP4 :Run file4.bat on 2 same servers as in STEP2 (Server5, Server6) in parallel
STEP5 :Run file5.bat on 4 same servers as in STEP1 (Server1, Server2, Server3, Server4) in parallel
我计划这样做如下:
服务器列表1.txt:
Server1 ip
Server2 ip
Server3 ip
Server4 ip
服务器列表2.txt:
Server5 ip
Server6 ip
大师.bat:
@echo off
setlocal enabledelayedexpansion
for /F "delims= " %i in (C:\test\Serverlist1.txt) do ( psexec \\%i C:\test\file1.bat )
for /F "delims= " %i in (C:\test\Serverlist2.txt) do ( psexec \\%i C:\test\file2.bat )
call file3.bat
for /F "delims= " %i in (C:\test\Serverlist2.txt) do ( psexec \\%i C:\test\file4.bat )
for /F "delims= " %i in (C:\test\Serverlist1.txt) do ( psexec \\%i C:\test\file5.bat )
我还没有测试过,所以不确定Master.bat文件中的多个FOR循环是否会相互等待完成?我应该将这些FOR循环放在其他批处理文件中,然后在Master.bat中调用它们吗?这一切对我来说似乎有点冗长。有什么简单的方法可以做到这一点吗?需要帮忙 !
编辑1
文件1.bat
taskkill /f /im firefox.exe
net stop W3SVC
sc config W3SVC start= demand
net start W3SVC
我希望 file1.bat 等到收到“SUCCESS”信号。我应该把waitfor SUCCESS
命令放在 file1.bat 文件的哪里?
在上面的Master.bat文件中,我应该插入命令以向file1.batwaitfor /SI SUCCESS
发送信号以开始运行?
实际上我必须为所有五个批处理文件定义不同的信号名称,以便我可以按照上面提到的 5 个步骤依次运行它们。