Тема: CMD/BAT Возможно ли передать символ ^ в строке аргументов?
Код пакетника 1:
@echo off
echo 1: argument _%1_
call 2.bat %1
@echo off
echo 2: argument _%1_
1) Передаем простую строчку:
1.bat 123-abc
Выдает:
1: argument _123-abc_
2: argument _123-abc_
Все замечательно.
2) Передаем строчку, содержащую символ ^:
1.bat 123^abc
Съедает символ на первом же пакетнике:
1: argument _123abc_
2: argument _123abc_
3) Передаем строчку с удвоенным ^^:
1.bat 123^^abc
Съедает.
1: argument _123abc_
2: argument _123abc_
4) Не сдаемся, передаем с учетверенным ^:
1.bat 123^^^^abc
Хм, оставляет один символ из 4-х:
1: argument _123^abc_
2: argument _123abc_
5) Увеличиваем дальше. Любопытные изменения происходят при 8-ми ^:
1.bat 123^^^^^^^^abc
1: argument _123^^abc_
2: argument _123^abc_
Из чего делаем вывод, что символ-таки передается в обоих пакетниках и при меньшем количестве, просто "с трудом" отображается.
6) Продолжаем эксперименты. Оборачиваем аргумент в кавычки:
1.bat "123^^abc"
1: argument _"123^^abc"_
2: argument _"123^^^^abc"_
Начинается размножение. Как раз в такой ситуации мне и встретилась эта проблема. В пути к файлу был символ ^, который стал размножаться.
Что можно сделать для стабилизации передачи "крышечки" в аргументах пакетников?
Я знаю, что ^ используется в пакетниках и в командной строке как символ экранирования. Собственно и не удивляюсь такому поведению, но вдруг есть способ его обуздать?