Я хочу переместить мои файлы .xml из одного каталога (назовем его "из") в другой (мы будем называть его "в"), но с использованием подстановочных знаков перемещает ненужные файлы, такие как .xml_. Как я могу переместить их, точно указав расширение ".xml"?
2 ответа
Как говорит ссылка @ Scott, *.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
, я оставлю его в качестве упражнения для сценариев.- Я не проверял, что происходит, когда в именах файлов или каталогов есть пробелы, но я ожидал осложнений.
Вы должны иметь возможность перемещать только файлы .xml, используя * .xml в качестве имени файла. Это приведет к следующей команде:
move C:\source\folder\*.xml C:\destination\folder\