在.bat文件中的FOR循环内执行REG ADD时出现问题

时间:2016-09-01 10:48:35

标签: batch-file for-loop

我创建了一个包含如下行的批处理文件:

REG ADD "HKCR\VLC.%%G\shell\folder1\folder2" /ve /t REG_SZ /d "\"C:\Program Files (x86)\Program\\program.exe\" \"%%1\"" /f

并且它正常工作,如果我想使用for循环更改多行,我会使用相同的语句得到此错误:

\Program\program.exe\" \"%1\"" non atteso.

我尝试过使用没有空格的路径,它可以正常工作。 如何使用带空格的路径?

1 个答案:

答案 0 :(得分:2)

正如你已经想到的那样,(x86)的右括号出现了问题 通常这在引号内没有问题,但是由于您的注册表值中也有引号,它们会中断批量转义。

您可以在此使用延迟扩展,而不是使用插入符号进行硬编码转义。

setlocal EnableDelayedExpansion
set "value="C:\Program Files (x86)\Program\program.exe" "%%1""
set "value=!value:"=\"!"
for %%a in (dummy) do (
    REG ADD "HKCR\VLC.%%G\shell\folder1\folder2" /ve /t REG_SZ /d "!value!" /f
)