如果 reg 则抑制批处理命令中的错误

Bon*_*rse 2 windows-registry command-line batch-file

如果我运行以下命令:

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

并且注册表不存在,它给出了以下错误

ERROR: The system was unable to find the specified registry key or value.
Run Code Online (Sandbox Code Playgroud)

我知道错误是预期的,但是如何抑制此错误?

不太关心 ECHO 部分只显示“SERVER:”而没有任何价值,这对我来说很好。

MC *_* ND 6

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

ECHO Server:  %ServerName%
Run Code Online (Sandbox Code Playgroud)

从您的代码更改:

  • (不需要)delims删除。制表符和空格是默认分隔符,不需要包含它们
  • (需要)stderr流(流编号 2)被重定向到 nul 设备以隐藏错误输出。>当包含在for /f命令中时,重定向运算符需要转义,从这里开始^>
  • (recommended) setcommand 被引用以防止值中出现结尾空格或特殊字符的问题。引号只保护操作不包含在存储到变量中的值中。