Batch file 在批处理查询中使用变量

Batch file 在批处理查询中使用变量,batch-file,Batch File,我不明白为什么这不起作用。我希望找到一个密钥,然后删除它。我已经注释掉了用于测试的delete,因为它会产生一个错误,如“regquery”行所示 输出为: 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

我不明白为什么这不起作用。我希望找到一个密钥,然后删除它。我已经注释掉了用于测试的delete,因为它会产生一个错误,如“regquery”行所示

输出为:

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:\>
Edit1

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

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

C:\>
您的初始代码,并对
StartRCM
的值进行了调整

HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server StartRCM注册表项DWORD 0x0 从查询输出中:

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

如果您提供以下命令的实际输出,
Reg Query“HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server”
,并解释您试图检索和执行的内容,肯定会对我们有所帮助。此外,您可能会发现
For/?
的输出很有用,尤其是在引用令牌和分隔符时。只需找到一个键,将其放入变量,然后删除该键。我根本不理解将任何输出放入变量的原因。请阅读
Reg Delete/?
的输出,如果您确实觉得有必要,(如果您希望删除一个值而不是一个键),
Reg Query/?
For/?
。谢谢Compo,是的,这是我希望删除的值。对的变量的用途是更改所需“值”的名称,但它始终具有常量字符串组件,因此使用此方法,我可以找到值并将其删除,因为reg delete不允许使用通配符。上面的代码是一个简化的示例。好吧,您特别使用了一个常量字符串,
StartRCM
,那么这有什么意义呢?请返回您的问题并编辑它,尽量更好地解释任务和问题。
C:\>Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server"

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

C:\>
@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%"
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server StartRCM REG_DWORD 0x0