Я использую forfiles /S
для итерации по дереву каталогов. Я запускаю его непосредственно в командной строке .
Чтобы узнать текущий каталог, я хочу развернуть встроенную переменную %CD%
, но не сразу (показывая текущий каталог экземпляра командной строки, который выполняет forfiles
), но с %
экранирован таким образом, что %CD%
расширяется экземпляр командной строки в теле forfiles
.Как избежать процента `%` знак в теле `forfiles`?
forfiles /S /P "D:\Data" /M "*.txt" /C "cmd /C echo %CD%"
Есть ли способ избежать %
и так вроде скрыть его от основного экземпляра интерпретатора командной строки?
Я попытался %%
(который прекрасно работает в пакетном файле), ^%
, \%
, и даже заключая %CD%
в простом и спасся кавычки ("%CD%"
/\"%CD%\"
), но я не имел никакого успеха до сих пор.
Я знаю, что я мог бы использовать delayed expansion как следующий, но я хочу, чтобы избежать этого:
forfiles /S /P "D:\Data" /M "*.txt" /C "cmd /V:ON /C echo !CD!"
Спасибо! Если я получу это правильно, вторая работа с использованием переменной не ограничивается 'forfiles', она также может использоваться для других команд, которые принимают цитируемые строки. – aschipfl