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, не воспринимая & как разделитель команд (и другие спец. символы)?


Ответы (0 шт):