Как исключить типы файлов при рекурсивном копировании в Windows

У меня есть каталог Windows X с подкаталогами x_1...x_100. Каждый из подкаталогов x_i (i=1..100) содержит отдельный файл данных (с различными именами), а также дополнительный файл с именем "annotation.txt", который мне не нужен.

Я хочу скопировать все файлы данных в x_1... x_100 в новый каталог Y, за исключением "annotation.txt", потому что в противном случае мне будет предложено 100 вопросов о перезаписи.

Синтаксис, который я использовал для рекурсивной копии:

for /r "C:<path to X> %x in (*) do move "%x" "C:<path to y>

Что мне нужно добавить, чтобы скопировать все файлы, кроме "annotation.txt" (или, в более общем случае, все файлы, кроме тех, которые содержат некоторые символы подстановки)?

1 ответ

Это звучит как работа для robocopy, Я не знаю, хотите ли вы перемещать каталоги или только файлы. Увидеть robocopy /? для деталей об использовании /MOV или же /MOVE, /XF Параметр позволяет исключить файлы.

robocopy C:\source\dir C:\destination\dir * /S /E /MOV /XF annotation.txt

Обновить:

Как насчет использования PowerShell?

Get-ChildItem -Files -Recurse -Path 'C:\source\dir' -Exclude "annotation.txt" |
    ForEach-Ohject { Move-Item -Path $_.FullName -Destination 'C:\destination\dir' -WhatIf }
Другие вопросы по тегам