gpt4 book ai didi

batch-file - 如何从批处理脚本中获取注册表项的值?

转载 作者:行者123 更新时间:2023-12-03 05:43:50 26 4
gpt4 key购买 nike

我需要使用 REG QUERY 命令来查看键的值,并使用以下命令将结果设置到变量中:

FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "KeyName" /v ValueName') DO SET Variable=%%B

但是如果 key 不存在,我会在控制台中显示错误。我需要隐藏这个错误!我尝试在命令后面添加 2>nul 来停止 stderr,但是如果我只调用命令,这会起作用:

REG QUERY "KeyName" /v ValueName 2>nul

如果我将它放入 FOR 命令中,如下所示:

FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "KeyName" /v ValueName') DO SET Variable=%%B 2>nul

显示错误。那么有人知道如何隐藏错误吗?或者也许另一个命令也可以查看 key 是否存在?

谢谢

PS:我使用的是 Windows XP

最佳答案

这对我有用:

@echo OFF

setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_CURRENT_USER\Software\Microsoft\Command Processor"
set VALUE_NAME=DefaultColor

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
set ValueName=%%A
set ValueType=%%B
set ValueValue=%%C
)

if defined ValueName (
@echo Value Name = %ValueName%
@echo Value Type = %ValueType%
@echo Value Value = %ValueValue%
) else (
@echo %KEY_NAME%\%VALUE_NAME% not found.
)

usebackq 是必需的,因为 REG QUERY 命令使用双引号。

skip=4 忽略除具有值名称、类型和值(如果存在)的行之外的所有输出。

2^>nul 防止出现错误文本。 ^ 是转义字符,可让您将 > 放入 for 命令中。

当我按照给定的方式运行上面的脚本时,我得到以下输出:

Value Name = DefaultColor
Value Type = REG_DWORD
Value Value = 0x0

如果我将 VALUE_NAME 的值更改为 BogusValue,那么我会得到以下结果:

"HKEY_CURRENT_USER\Software\Microsoft\Command Processor"\BogusValue not found.

关于batch-file - 如何从批处理脚本中获取注册表项的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com