在窗口中使用批处理脚本在数据中添加需要的引号

小威利斯在这里。 我正在尝试使用批处理脚本来编辑双击.jar文件时使用的现有registry项。 问题是,我试图input的数据包含引号,但我也需要报价为它被视为一个string。

例:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* /f 

当我在批处理脚本中运行该命令时,cmd窗口会输出“Error:Too many command line parameters”

所以要做到这一点。 我想用“C:\ Program Files \ Java \ jre7 \ bin \ javaw.exe”-jar“%1”%*作为包含引用以及%1和%*的数据来添加registry项没有转换成任何实际的语句或string。

编辑:

通常使用以下命令行string添加registry:

 ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* 

它在命令行中工作正常,但正如下面给出的代码,当我在批处理脚本中使用这个“%1”和%*没有出现。

使用反斜杠来转义内部引号,即:

 reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "\"C:\Program Files\Java\jre7\bin\javaw.exe\" -jar \"%1\" %*" /f 

字符百分比必须在批处理文件中加倍: \"%%1\" %%*"

作为dbenham的答案的补充,你应该使用backslaches和报价的位置路径!
(我的意思是,你应该使用"\"C:\Program Files.....而不是"C:\Program Files.....

所以这是典型的百分号&增加问题的最终答案:

 reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "\"C:\Program Files\Java\jre7\bin\javaw.exe\" -jar \"%%1\"" /f 

感谢dbenham!

另一种方法是使用单引号,有些应用程序可以正确读取它,例如:

 reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "'C:\Program Files\Java\jre7\bin\javaw.exe\' -jar '%1' %*" /f