- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
Bat: Передать аргументы скрипта другой программе
Нужно сделать так, чтобы аргументы bat-файла были переданы другой программе в неизменном виде. Необходимо, чтобы скрипт инициализировал переменные среды, а затем вызывал другую программу с аргументами, которые были переданы самому скрипту. Аргументы должны передаваться в исходном виде, поэтому просто заключить всё в кавычки не получится.
Написал такой скрипт:
REM здесь будет инициализация переменных среды
prog.exe %*
Проблемы возникают, когда аргументы содержат спец. символы (например, &
). Пример: batch.bat hello ^& world
раскроет эту строку как prog.exe hello & world
, вызовется prog.exe
с аргументом hello
и попытка вызвать команду world
. В итоге приходится делать двлйной уровень экранирования, то есть batch.bat hello ^^^& world
, тогда строка раскрывается как prog.exe hello ^& world
, и всё вызовется нормально. Но использовать двойной уровень экранирования неудобно. Как можно заэкранировать символы в переменной или просто заставить bat воспринимать их как аргументы и напрямую передавать prog.exe
, не воспринимая &
как разделитель команд (и другие спец. символы)?