2

Я хочу переместить мои файлы .xml из одного каталога (назовем его "из") в другой (мы будем называть его "в"), но с использованием подстановочных знаков перемещает ненужные файлы, такие как .xml_. Как я могу переместить их, точно указав расширение ".xml"?

2 ответа2

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 , я оставлю его в качестве упражнения для сценариев.

  • Я не проверял, что происходит, когда в именах файлов или каталогов есть пробелы, но я ожидал осложнений.
0

Вы должны иметь возможность перемещать только файлы .xml, используя * .xml в качестве имени файла. Это приведет к следующей команде:
move C:\source\folder\*.xml C:\destination\folder\

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .