远程系统批处理重启服务

时间:2014-01-18 23:07:27

标签: windows batch-file cmd command command-line-interface

只是遇到批处理问题,需要对'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

1 个答案:

答案 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%为空的情况下。