批处理文件注册表删除:如何删除名称中带有 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" 值中。
我搜索一下:
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" 值中。