Вызов пакетного файла с аргументами, имеющими кавычки - PullRequest
5 голосов
/ 01 декабря 2010

У меня есть командный файл test.bat, и он принимает 2 аргумента из командной строки.

Arg1 - "C:\work Area\"
Arg2 - "Hello politics="Hero Jack""

У меня есть test.bat, звонящий как

test.bat "C:\work Area\" "Hello politics="Hero Jack""

Я хочу, чтобы второй аргумент воспринимался bat-файлом как Hello politics="Hero Jack". Я не знаю, как вызвать test.bat с аргументом, чтобы это случилось так .. Второй аргумент, который он принимает, похож на "Hello politics="Hero, и он отбрасывает Jack". Можете ли вы дать мне знать, что я звоню неправильно ..

Ответы [ 3 ]

3 голосов
/ 01 декабря 2010

На мой взгляд, невозможно получить его как один параметр

Arg2 - "Hello politics="Hero Jack""

Это потому, что токенизатор параметров не очень заинтересован в символах.Кажется, что токенайзер считает только кавычки.

Парсер обнаруживает каретки и может экранировать специальные символы, такие как &> или <<br> Но токенизатор, который разбивает строку на параметры% 1,% 2, используетправить.Разделитель, как;= запускает новый параметр, это может быть подавлено, только если перед

test.bat """This is one param"
test.bat ""These are four params"
test.bat ^"This is also one param"
test.bat ^^"This is also one param"

есть неравное количество кавычек * Но вы можете использовать обходной путь, например

test.bat "C:\work Area\" "Hello politics=""Hero Jack""

Это создает в%2 "Привет политики =" "Герой Джек" "
Тогда вы можете заменить все двойные кавычки одной кавычкой.

0 голосов
/ 01 декабря 2010

Хорошо, возьмите 2. Попробуйте обернуть всю строку аргумента в дополнительную пару кавычек:

test.bat ""C:\work Area\" "Hello politics="Hero Jack"""

Источник: http://ss64.com/nt/syntax-esc.html

0 голосов
/ 01 декабря 2010

Используйте символ ^ в качестве escape-символа перед каждой внутренней кавычкой, таким образом:

test.bat "C:\work Area\" "Hello politics=^"Hero Jack^""

Я надеюсь, что это работает для вас.

Источник: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx?mfr=true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...