Як посилання @ Скотт обговорює, *.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
, я пишу це як сценарій для вас.
- Я не перевіряв, що відбувається, коли в іменах файлів чи каталогів є пробіли, але я очікую ускладнень.