1 (изменено: BlackOverlord, 2013-07-05 23:51:09)

Тема: CMD/BAT: Как экранировать двойные кавычки?

Проблема такова: нужно запустить некий скрипт/программу и в качестве аргумента передать длинную строку, которая содержит любые символы (в том числе пробелы и двойные кавычки). Что делать с пробелами - понятно, но как быть с двойными кавычками? В линуксе они просто экранируются бэкслэшем, в винде - не работает, пробовал через ^ - не получается. Есть идеи?

2

Re: CMD/BAT: Как экранировать двойные кавычки?

Удваивайте каждую внутреннюю кавычку.

( 2 * b ) || ! ( 2 * b )

3

Re: CMD/BAT: Как экранировать двойные кавычки?

Насколько я знаю, единого правила на этот счёт нет. Может быть, кстати, и обратный слэш — для REG.EXE и удвоенные кавычки — для FIND.EXE.
При определённых условиях (кавычек в аргументе чётное число, между чётной и следующей за ней нечётной кавычкой нет пробелов; это позволяется вызываемым приложением) кавычки можно вообще не экранировать.
При передаче аргументов собственноручно разрабатываемым командным файлам хорошо воспользоваться советом Rumata — вышеуказанные условия соблюдаются автоматически, но при этом надо не забыть при разборе аргументов заменить удвоенные кавычки одним знаком.