我创建了一个包含如下行的批处理文件:
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.
我尝试过使用没有空格的路径,它可以正常工作。 如何使用带空格的路径?
答案 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
)