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