使用bat文件启动或停止Windows服务

时间:2017-11-03 07:07:08

标签: file batch-file

我需要使用.bat文件启动或停止5个Windows服务。我一直在做下面的事情。但是,一旦我运行这个,我得到一个错误 - %x服务未找到。

for %%x in (
"service 1"
"service 2"
"service 3"
) do net start | find %%x > nul 2>&1 
if not .%errorlevel%.==.0. net start %%x >nul
goto skip

:skip
pause 

1 个答案:

答案 0 :(得分:1)

for %%x in (
"service 1"
"service 2"
"service 3"
) do (
 net start | find %%x > nul 2>&1 
 if errorlevel 1 net start %%x >nul
 if errorlevel 1 goto skip
)

:skip

在您的代码中,只会在net start循环中执行第一个for。您需要将命令形成code block(带括号的行序列)。

缺点是当解析code block时,任何 %var%将被当时%var% 的值替换

因此,您需要使用errorlevelif errorlevel n的原始语法,这意味着&#34;如果errorlevel是n 或大于n &#34; < / p>

由于您似乎想要重试,因此在errorlevel = 1 or more之后net start的情况下要执行的指令将重试,并且我假设您要转到{ {1}}如果重试失败。请注意,如果原始尝试成功,skip将为errorlevel(我假设),因此0将失败并且执行重试,因此{{1将保留在if