Поскольку ссылка @ Скотта обсуждает, *.xml
соответствует *.xml_
, потому что имя 8.3 заканчивается .XML
(используйте, dir /x
чтобы показать).
К счастью, команда ForFiles не подпадает под эту эксцентричность, поэтому вы можете использовать:
forfiles /m *.xml /c "cmd /c move @path TargetDir\"
Заметки:
- Поскольку
move
это внутренняя команда,cmd
для ее вызова требуется отдельная команда (это не требуется для внешней команды (такой какxcopy
), как вforfiles /m *.xml /c "xcopy @path TargetDir\"
). Существует
/s
опция, которая будет проходить через подкаталоги, но она не будет проходить через целевой каталог: если вы хотите, чтобы исходное дерево соответствовало цели, вам нужно будет проанализировать исходный путь, чтобы найти правильный целевой каталог, что, вероятно, лучше всего сделать в командном файле:forfiles /m *.xml /c "cmd /c call mover.cmd @relpath TargetDir\"
Если вам нужно
mover.cmd
, я оставлю написание сценария для вас.- Я не проверял, что происходит, когда в именах файлов или каталогов есть пробелы, но я ожидал осложнений.