只是在批处理方面遇到了问题,需要对“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 失败,或者可能提供更好的方法吗?
泰米尔纳德邦
答案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