只是遇到批处理问题,需要对'IF','ELSE'和'GOTO'进行澄清
@echo off
sc \\RemoteServer stop "My_Service"
:query
sc \\RemoteServer query "My_Service"
if %state% == 1 goto start # state =1 indicates service is stopped
else goto query
:start
sc \\RemoteServer start "My_Service"
因此,我想要发生的是,服务停止,批处理以查询服务状态,并根据状态继续下一步。这是必要的,因为该服务需要很长时间才能停止。如果服务停留在3 STOP_PENDING
,则sc start
将失败。
有人可以解释为什么我的GOTO失败了,或者可能提供更好的方法吗?
TNA
答案 0 :(得分:0)
使用else时,您需要在命令周围使用括号,并将else语句与结束括号放在同一行:
if "%state%"=="1" (goto start) else goto query
或者,如果您需要在if语句中执行更多操作:
if "%state%"=="1" (
echo State is 1
goto start
) else (
echo State is not 1
goto query
)
请注意,if条件周围的引号不是必需的,只是在%state%
为空的情况下。