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