Serviços de desativação de arquivos em lote

0

Este é um recorte do meu arquivo de lote. Eu preciso determinar se o serviço existe, se ele está em execução, pare, mude para desativado em uma linha legal.

echo.&echo.&echo =====Disable services=====
echo.
for %%x in (
"Mcx2Svc"   
"NetTcpPortSharing" 
"RemoteRegistry"
"SharedAccess"
"fax"
"TabletInputService"
"RemoteAccess"
"UxSms"
"Bdesvc"
"EFS"
"wsearch"
"ehsched"
"ehRecvr"
) do (sc query %%x| find "STATE" >nul 2>&1 && sc query %%x| find "RUNNING" >nul 2>&1 && echo Changing services to disabled: %%x && sc config %%x start= disabled)
    
por Chris Robertson 19.01.2017 / 21:18

1 resposta

0

A consulta sc localizada e a localização não fazem sentido para mim. Mesmo que não seja uma linha legal, esta é a IMHO mais clara.

@Echo off
echo.&echo.&echo =====Disable services=====
echo.
for %%x in (
  "Mcx2Svc"   
  "NetTcpPortSharing" 
  "RemoteRegistry"
  "SharedAccess"
  "fax"
  "TabletInputService"
  "RemoteAccess"
  "UxSms"
  "Bdesvc"
  "EFS"
  "wsearch"
  "ehsched"
  "ehRecvr"
) do For /f "tokens=1-3 delims=: " %%S in (
  'sc query %%x ^|findstr /i "STATE" 2^>^&1 '
) Do (
  echo Changing services to disabled: %%x %%S %%T %%U
  Echo sc config %%x start= disabled
)

O for / f analisa a saída da consulta sc e filtra a linha com STATE, armazenando no vars %% S, %% T, %% U
Para mostrar o que seria executado, o sc config é precedido por um eco. Remova o eco para ativar o comando.

    
por 19.01.2017 / 22:23