У меня есть сценарий bat, и первый переданный аргумент: "C:\aaa^bbb\xxx^yyy.txt"
I wi sh, чтобы получить файл и содержащий dir (head):
set winhead=%~dp1
set winfile=%~nx1
echo winhead: %winhead%
echo winfile: %winfile%
Печатает
winhead: 'C:\aaabbb\'
winfile: 'xxxyyy.txt'
Я вижу вставки ^
там, где они упали. Хорошо, я просто уйду от них:
set Pathin=%1
set Pathin=%Pathin:^=^^%
echo Pathin: %Pathin%
Печать
Pathin: "C:\aaa^^bbb\xxx^^yyy.txt"
Теперь, чтобы извлечь имя файла и заголовок:
set winhead=%~dpPathin%
set winfile=%~nxPathin%
или
set winhead=%~dpPathin
set winfile=%~nxPathin
Не выполняет модификатор, а просто возвращает буквальную строку. После некоторого исследования я обнаружил, что модификаторы могут использоваться только с аргументами, т.е. в данном случае %1
.
Так это ошибка, что модификаторы не обрабатывают символы вставки правильно? Как извлечь части полного пути для файлов, которые можно было создать в проводнике (то есть тех, которые содержат символы вставки)?