Добавление раздела реестра в окнах с кавычками, необходимыми в данных, с помощью пакетного сценария - PullRequest
9 голосов
/ 05 марта 2012

Маленький Уиллис здесь. Я пытаюсь использовать пакетный скрипт для редактирования существующего ключа реестра, который используется при двойном щелчке по файлу .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 и% * точно такими, как они есть не преобразуется ни в один фактический оператор или строку.

EDIT:

Реестр обычно добавляется с использованием этой строки командной строки:

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

он отлично работает в командной строке, но так же, как код, приведенный ниже, когда я использовал это в пакетном скрипте, «% 1» и% * не отображаются.

Ответы [ 4 ]

17 голосов
/ 05 марта 2012

Используйте обратную косую черту, чтобы избежать внутренних кавычек, то есть:

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
11 голосов
/ 05 марта 2012

Литералы процентов должны быть удвоены в пакетном файле: \"%%1\" %%*"

2 голосов
/ 15 октября 2013

как дополнение к ответу 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

спасибо, Дбенхем!

1 голос
/ 08 февраля 2015

Другой альтернативой является использование одинарных кавычек, некоторые приложения могут правильно их прочитать, например:

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
...