Как правильно процитировать что-то в командном файле? - PullRequest
2 голосов
/ 23 августа 2011

Как правильно указать переменную в командном файле?

Я обнаружил, что что-то вроде "%~dp0" не работает, потому что оказывается что-то вроде "C:\Windows\", что, в свою очередь, интерпретируется как наличие экранированной кавычки в конце.

О, и, конечно, всегда есть проблемы со встроенными кавычками - есть ли способ их избежать?

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

Если вы хотите передать что-то с пробелами в переменную, использующую `(вверху слева от клавиатуры), это также должно относиться к встроенным кавычкам.Если вы передаете переменную с пробелами в другой пакет, используйте двойные кавычки.

0 голосов
/ 23 августа 2011

Здесь вы немного смешиваете различные проблемы с кавычками / экранированием.
В самом пакете есть другие правила для кавычек и экранировок, чем для reg.

В пакете каретка экранирует следующий символ, но только вне кавычек (есть только одно исключение для экранирования восклицательного знака внутри кавычек).

reg.exe использует \ для экранирования следующего символа, EDIT: , но кажется, что он экранирует только символ кавычки.
Чтобы встроить одну кавычку, прощеиспользуйте две кавычки.
Только обратная косая черта в конце содержимого является проблемой, поскольку она выходит за пределы последней цитаты.

Reg Add HKCU\Temp /d "One""two\\" /t REG_SZ

Добавляет One"two\

0 голосов
/ 23 августа 2011

Какую переменную вы пытаетесь процитировать?Если вы определили переменные в переменных среды / системы, вы можете заключить их в кавычки как
%variable_name%.
Например, если вам нужно заключить в кавычки переменную 'path', тогда %path% - правильный путь

...