首页 > 解决方案 > 在批量查询中使用变量

问题描述

我很困惑为什么这不起作用。我希望找到一个密钥然后将其删除。我已注释掉删除以进行测试,因为它会产生如“reg query”行所示的错误。

@echo off

for /f  %%a in (' 
    reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" ^|
    find "StartRCM"
') do (
     set "regs=%%a"
)

echo %regs%

set key="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\%regs%"
echo %key%

REM reg delete %key% /f
reg query %key%

输出是:

C:\>test2.bat
StartRCM
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\StartRCM"
ERROR: The system was unable to find the specified registry key or value.

C:\>

编辑1

C:\>Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server"

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
    StartRCM    REG_DWORD    0x0
...

C:\>

标签: batch-file

解决方案


@echo off

for /f  %%a in ('
    reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" ^|
    find "StartRCM"
') do (
     set "regs=%%a"
)

echo "%regs%"

set "key=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"
echo %key%

if defined regs reg delete "%key%" /v "%regs%" /f
reg query "%key%"

您的初始代码调整了StartRCM.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\终端服务器
     StartRCM REG_DWORD 0x0

从您的查询输出:

  • 第一行是关键
  • StartRCM价值
  • REG_DWORD数据类型
  • 0x0数据

推荐阅读