Reinicie o serviço no sistema remoto em lote

0

Basta ter problemas com um lote e precisar de alguns esclarecimentos sobre 'IF', 'ELSE' e '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"

Então, o que quero que aconteça é que o serviço seja interrompido, que o lote consulte o estado do serviço e, dependendo do estado, prossiga para a próxima etapa. Isso é necessário, pois o serviço leva um pouco de branco para parar. Se o serviço estiver preso em 3 STOP_PENDING , o sc start falhará.

Alguém pode explicar por que meu GOTO está falhando ou possivelmente oferecer uma metodologia melhor?

TNA

    
por btgream 18.01.2014 / 23:36

1 resposta

0

Usar uma instrução if em lote geralmente segue este formato:

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

Não há razão para o intérprete do cmd associar o ELSE ao IF.

Além disso, comentários em lote em sua própria linha, com um REM ou% de:: especialmente interpretada (algum tipo de rótulo de linha nulo ou algo assim, se bem me lembro).

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