Рекомендуется использовать двойные кавычки вокруг параметра пути (/ P) для обработки путей с пробелами.
Проблема возникает, когда переменная подстановки содержит обратную косую черту. Обратная косая черта «экранирует» кавычку, в результате чего FORFILES неверно интерпретирует остальную часть командной строки.
По соглашению, путь к каталогу не требует завершающей обратной косой черты, единственным исключением является корневой каталог. Указание только буквы диска и двоеточия C:
НЕ относится к корневому каталогу, а скорее относится к «текущему каталогу» для этого диска. Чтобы обратиться к корню, необходимо использовать обратную косую черту C:\
.
Мое решение заключается в следующем:
При использовании FORFILES добавьте .
до закрытия "/P
параметра, например
FORFILES /P "%somePath%." /C "CMD /C ECHO @path"
После замещения это приводит к путям вида C:\.
, C:\TEMP.
или C:\TEMP\.
. Все они правильно обрабатываются ФАЙЛАМИ, а также DIR.
Я не проверял все возможные переменные подстановки FORFILES, поскольку @path
, кажется, не зависит от добавления .