批处理文件注册表删除:如何删除名称中带有 space 且反斜杠结尾的注册表项

Batch file reg delete : how to delete registry key with space in name and backslash ending

我搜索一下:

set keypath=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders
reg query "!keypath!" /s /f "%mysearch%"

我想删除所有与我的搜索匹配的结果

但我对某些结果 (!myresult!) 有疑问,例如 :

"c:\Program Files\mysearch\"
"c:\Program Data\mysearch\"

当我这样做时:

reg delete "!keypath!" /v "!myresult!" /f

它不起作用(我想是因为 !myresult! 以 \ 和 " 结尾),在删除之前要求我确认并且不起作用,因为系统找不到密钥

当我这样做时:

set myresult=!myresult:\=\!
reg delete "!keypath!" /v "!myresult!" /f

它不起作用,没有要求我确认,但系统也没有找到密钥

当我这样做时:

reg delete "!keypath!" /v !myresult! /f

它不工作我有一个语法错误(因为 !myresult! 中的 space),但 !myresult 中没有 space!有效

如果有人有想法。

谢谢。

您的结尾反斜杠正在转义双引号(更多 )。

您可以检查值是否以斜杠结尾并将其加倍。

if "!myresult:~-1!"=="\" set "myresult=!myresult!\"
reg delete "!keypath!" /v "!myresult!" /f

但是当你有一个双反斜杠结束值时这会失败,所以可能更好的选择是直接使用

reg delete "!keypath!" /f /v "!myresult!

/f 已移动并且收盘价已被删除。要使用它,请确保行尾没有任何 space。由于报价尚未关闭,任何 space 都将包含在 "quoted" 值中。