将REG QUERY结果设置为字符串

时间:2014-09-01 10:49:24

标签: batch-file registry dos

我一直在尝试将REQ QUERY的结果标记为字符串。 我一直在尝试将结果的路径本身显示为字符串值,以便稍后可以使用它。

我试图这样做,但是却出现了一些错误。

@ECHO off
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print" /F "C:\\jdavies6" /S
set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print"
set VALUE_NAME=C:\\jdavies6

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

@ echo %ValueName%
Pause 

我希望脚本将键路径设置为我使用的值,但是它将“搜索结束”设置为值。 这是因为它会为结果的每一行覆盖设定值3次,但我不确定如何纠正这个问题?

2 个答案:

答案 0 :(得分:0)

此构造仅在第一次通过循环时设置变量 它取决于变量是空白的,所以如果需要,在循环之前初始化它们。

if not defined ValueName  set ValueName=%%A
if not defined ValueType  set ValueType=%%B
if not defined ValueValue set ValueValue=%%C

答案 1 :(得分:0)

尝试这个并且\\是另一个问题(因为它不是批处理,批量转义字符是你不需要的)。而且我不确定你是否可以将/ f和/ s结合起来。

@ECHO off
set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print"
set VALUE_NAME=C:\jdavies6
FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /F "%VALUE_NAME%" /S`) DO (
    set ValueName=%%A
    set ValueType=%%B
    set ValueValue=%%C
)
echo %ValueName%
pause