我有一个相当简单的任务,但在命令行脚本中总是noob。我搜索了一下,发现了一些基本命令与Windows机器上的服务进行交互,但没有检查服务是启动还是停止。我希望有人可以帮助一个脚本,将停止3个服务,检查以确保所有3个都停止,并且一旦所有的都停止了。再次启动它们。我需要确保在启动任何3个备份之前,所有3个都已停止。我知道如何停止和开始服务,但剩下的就是我卡住的地方。如何停止Windows服务,检查它是否已停止,并使用命令行重新启动它?
net Stop S1
net Stop S2
net Stop S3
//Check if all 3 are stopped
//If all 3 have been stopped successfully
net start s1
net start s2
net start s3
我想出了这一点,但不认为语法是正确的......
net stop PriceIdxImport
net stop RawDataImportDB
net stop DBDailyTrxProcessService
set Pstate = sc query PriceIdxImport state
set Rstate = sc query RawDataImportDB state
set Dstate = sc query DBDailyTrxProcessService state
if Pstate == Inactive if Rstate == Inactive if Dstate == Inactive GOTO sub_StartServices
:sub_StartServices
net start PriceIdxImport
net start RawDataImportDB
net start DBDailyTrxProcessService
好吧,我把上面的脚本,并将其改变成而loop..it犯规正确地做循环?它检查状态,然后退出:(
echo on
net stop PriceIdxImport
net stop RawDataImportDB
net stop DBDailyTrxProcessService
ping -n 5 127.0.0.1 > nul
set Pstate = Sc query PriceIdxImport |find /i "STOPPED"
set Rstate = sc query RawDataImportDB |find /i "STOPPED"
set Dstate = sc query DBDailyTrxProcessService |find /i "STOPPED"
set Condition="false"
while Condition="false";do if Pstate neq "" (if Rstate neq "" (if Dstate neq "" GOTO sub_StartServices));done
exit
:sub_StartServices
set Condition="true"
net start PriceIdxImport
net start RawDataImportDB
net start DBDailyTrxProcessService
批量变量赋值必须这样做:'设置VAR = foo的bar'(不带空格周围的'= ') – 2013-02-27 21:21:47
好吧我把3个语句改成了没有空格,所以它适合var = xxx格式 – user1732364 2013-02-28 14:45:16