11

小威利斯在这里。我正在尝试使用批处理脚本来编辑双击 .jar 文件时使用的现有注册表项。问题是我尝试输入的数据包含引号,但我还需要引号才能将其视为字符串。

例子:

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窗口会打印出“错误:命令行参数过多”

所以让这个简单。我想添加一个注册表项,其中 "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* 作为数据,包括引号和 %1 和 %* 完全一样未转换为任何实际的语句或字符串。

编辑:

通常使用以下命令行字符串添加注册表:

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

它在命令行中运行良好,但正如我在批处理脚本中使用它时下面给出的代码一样,“%1”和 %* 不会出现。

4

4 回答 4

19

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

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
于 2012-03-05T02:21:00.800 回答
13

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

于 2012-03-05T04:35:20.340 回答
2

作为dbenham的答案的补充,您应该对位置路径使用反斜杠和引号!
(我的意思是,你应该使用"\"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

谢谢德本汉姆!

于 2013-10-15T08:56:33.240 回答
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
于 2015-02-08T04:38:30.113 回答