Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件reg delete:如何删除名称中有空格且以反斜杠结尾的注册表项_Batch File_Registry - Fatal编程技术网

Batch file 批处理文件reg delete:如何删除名称中有空格且以反斜杠结尾的注册表项

Batch file 批处理文件reg delete:如何删除名称中有空格且以反斜杠结尾的注册表项,batch-file,registry,Batch File,Registry,我进行搜索: set keypath=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders reg query "!keypath!" /s /f "%mysearch%" 我想删除所有与mysearch匹配的结果 但我有一个问题与一些结果!我的结果!像这样: "c:\Program Files\mysearch\" "c:\Program Data\mysearch\" 当我这样做时:

我进行搜索:

set keypath=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders
reg query "!keypath!" /s /f "%mysearch%"
我想删除所有与mysearch匹配的结果

但我有一个问题与一些结果!我的结果!像这样:

"c:\Program Files\mysearch\"
"c:\Program Data\mysearch\"
当我这样做时:

reg delete "!keypath!" /v "!myresult!" /f
set myresult=!myresult:\=\\!
reg delete "!keypath!" /v "!myresult!" /f
reg delete "!keypath!" /v !myresult! /f
我想这没用,因为!我的结果!以\和结尾,在删除前要求我确认,但由于系统没有“查找”密钥,因此不起作用

当我这样做时:

reg delete "!keypath!" /v "!myresult!" /f
set myresult=!myresult:\=\\!
reg delete "!keypath!" /v "!myresult!" /f
reg delete "!keypath!" /v !myresult! /f
它不工作,没有要求我确认,但系统也没有找到密钥

当我这样做时:

reg delete "!keypath!" /v "!myresult!" /f
set myresult=!myresult:\=\\!
reg delete "!keypath!" /v "!myresult!" /f
reg delete "!keypath!" /v !myresult! /f
它不工作,我有一个语法错误,因为在空间!我的结果!,但是没有空间!我的结果!它起作用了

如果有人有主意


谢谢。

您的结束反斜杠正在逃离双引号

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

如果我的结果:~-1!==\设置myresult=!我的结果\ 注册删除!钥匙路/v我的结果/F 但是当您有一个双反斜杠结束值时,这将失败,因此更好的选择可能是直接使用

注册删除!钥匙路/f/v!我的结果! 该/f已被移动,结束报价已被删除。要使用此选项,请确保行末尾没有任何空间。由于报价尚未关闭,因此报价值中会包含任何空格