Suprimir o erro no comando batch se reg

1

Se eu executar o seguinte:

@ECHO OFF
FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "HKLM\SOFTWARE\SomeApp\Server" /v ServerName') DO SET ServerName=%%B
ECHO Server:  %ServerName%

e o registro não existe, dá o seguinte erro

ERROR: The system was unable to find the specified registry key or value.

Eu sei que o erro é esperado, mas como pode suprimir esse erro?

Não muito preocupado com a parte do ECHO mostrando apenas "SERVIDOR:" sem valor, tudo bem para mim.

    
por BondUniverse 07.04.2015 / 18:24

2 respostas

1

Essa mensagem está chegando porque o comando REG está gravando no fluxo de saída padrão ou no fluxo de erro padrão. Se você realmente não se importa com as mensagens, pode redirecionar essa saída para que ela não seja exibida .

Altere seu comando para:

REG QUERY "HKLM\SOFTWARE\SomeApp\Server" /v ServerName > nul 2> nul
    
por 07.04.2015 / 18:29
4
FOR /F "tokens=2*" %%A IN ('
    REG QUERY "HKLM\SOFTWARE\SomeApp\Server" /v ServerName 2^> nul 
') DO SET "ServerName=%%B"

ECHO Server:  %ServerName%

Alterações do seu código:

  • (não necessário) delims removido. Guias e espaços são os delimitadores padrão, não há necessidade de incluí-los
  • (necessário) O fluxo stderr (fluxo número 2) é redirecionado para o dispositivo nul para ocultar a saída do erro. O operador de redirecionamento > precisa ser salvo quando incluído dentro do comando for /f , a partir daqui, o ^>
  • O comando
  • (recomendado) set é citado para evitar problemas com espaços finais ou caracteres especiais em valores. As aspas que apenas protegem a operação não estão incluídas no valor armazenado na variável.
por 08.04.2015 / 08:36