Adding a registry key in windows with quotes needed in the data using a batch script

随声附和 提交于 2019-12-31 17:37:31

问题


Little Willis here. I am trying to using a batch script to edit an existing registry key that is used when double clicking a .jar file. The issue is that the data that I'm trying to enter contains quotes but I also need quotes for it to be considered a string.

Example:

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

When I run that in a batch script the cmd window prints out "Error: Too many command line parameters"

So to make this simple. I want to add a registry key with "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* as the data including the quotations and the %1 and %* exactly as they are not converted to any actual statement or string.

EDIT:

The registry is normally added using using this command line string:

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

it works fine in the command line, but just as the code given below when I used this in a batch script the "%1" and %* don't appear.


回答1:


Use backslashes to escape the inner quotes, i.e.:

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



回答2:


Percent literals must be doubled in a batch file: \"%%1\" %%*"




回答3:


as an addition to dbenham's answer, you should use backslaches and quotes for location path !!
(i mean, you should use "\"C:\Program Files..... instead of "C:\Program Files..... )

so this is the final answer for typical percent sign & adding problem:

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

thanks dbenham!




回答4:


Another alternative is to use single quotes, some applications can read it properly, example:

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


来源:https://stackoverflow.com/questions/9560709/adding-a-registry-key-in-windows-with-quotes-needed-in-the-data-using-a-batch-sc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!