在远程系统上批量重新启动服务

在远程系统上批量重新启动服务

只是在批处理方面遇到了问题,需要对“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_PENDINGsc start失败。

有人能解释为什么我的 GOTO 失败,或者可能提供更好的方法吗?

泰米尔纳德邦

答案1

批处理中使用 if 语句通常遵循以下格式:

if %state%==1 (
   goto start
) ELSE (
   goto query
)

cmd 解释器没有理由将 ELSE 与 IF 其他语句关联起来。

此外,在它们自己的行上批量注释,并使用REM或进行特殊解释::(如果我没记错的话,是某种空行标签或类似的东西)。

REM this is a valid comment
:: this too, but be careful using these inside blocks of any kind... so stick to REM

相关内容