Как избежать замены переменной `@` в `forfiles`?
Я использую forfiles
командная строка вот так (Windows 7 x64):
forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @relpath"
Как я могу избежать замены @relpath
(относительный путь к текущему элементу итерации), чтобы получить @relpath
вывод буквально? (... или любой другой @
переменная?)
До сих пор безуспешно пробовал следующие вещи:
\
:@
кажется, обрабатываются раньше\
так\@relpath
не работает, скорее расширенному выводу просто предшествует\
;^
: заявив^@
не показывает никакого эффекта за исключением того, что^
исчезает; пишу^^@
не помогает ни один, один^
остается в расширенном выводе тогда;0xHH
: удивительно (для меня),forfiles
замена шестнадцатеричных чисел0x40
тоже не работает, похоже, это делается до разбора переменной;@@
: удвоение@
держит первым@
буквально это так;
2 ответа
Решение
Я только что нашел еще более простой метод:
forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @^relpath"
Обратите внимание ^
после @
знак.
Вы можете использовать отложенное расширение
forfiles /P "C:\temp" /M "st*.txt" /C "cmd /v:on /C set r=0x40 & echo !r:~0,1!relpath"
Или вы можете использовать процент расширения.
set percent=%
set at=@
forfiles /P "C:\temp" /M "st*.txt" /C "cmd /C echo %percent%at%percent%relpath"