Ответ
Предполагая, что вы имеете в виду целевой каталог (C: \ Target) и все файлы .txt находятся в каталоге C: \ Tree, следующая команда получит список всех файлов .txt и скопирует их в нужный файл. место назначения:
for /F "delims=" %a in ('dir /s /b "C:\Tree\*.txt" ') do (copy "%a" "C:\Target")
Я поставил двойные кавычки вокруг параметров, которые могут содержать пробелы.
объяснение
for /F
Выполняет разбор текста для цикла. По умолчанию токены будут разбиты на пробелы на переменные% a,% b,% c и т. Д. Поскольку мы не хотим такого поведения, я указал:
"delims="
Что означает отсутствие разделителей. % a будет переменной, содержащей каждую строку текста из вывода нашей команды. Команда, которую я использовал, была:
dir /s /b "C:\Tree\*.txt"
Выполняется распечатка каталога всех файлов, соответствующих * .txt в папке C: \ Tree. Флаг / s выполняется рекурсивно, ища внутри всех подкаталогов / подпапок. Флаг / b выводит листинг в «голом» формате, который в основном просто перечисляет файл и путь. Вывод выглядит так:
C:\Tree\animals\hippopotamus.txt C:\Tree\animals\lion.txt C:\Tree\animals\dog\poodle.txt C:\Tree\animals\dog\terrier.txt C:\Tree\food\fruit\apple.txt C:\Tree\food\fruit\orange.txt C:\Tree\food\vegetables\borcolli.txt C:\Tree\food\vegetables\carrot.txt C:\Tree\food\vegetables\corn.txt
И конечно:
copy "%a" "C:\Target"
Копирует файл, обозначенный переменной% a, в каталог C: \ Target. Цикл for в основном выполняет следующие команды:
copy "C:\Tree\animals\hippopotamus.txt" "C:\Target" copy "C:\Tree\animals\lion.txt" "C:\Target" copy "C:\Tree\animals\dog\poodle.txt" "C:\Target" copy "C:\Tree\animals\dog\terrier.txt" "C:\Target" copy "C:\Tree\food\fruit\apple.txt" "C:\Target" copy "C:\Tree\food\fruit\orange.txt" "C:\Target" copy "C:\Tree\food\vegetables\borcolli.txt" "C:\Target" copy "C:\Tree\food\vegetables\carrot.txt" "C:\Target" copy "C:\Tree\food\vegetables\corn.txt" "C:\Target"
Для получения дополнительной информации о параметрах DIR или циклах FOR в командной строке Windows (CMD) вы можете ввести help dir
или help for
. Осторожно, страница справки цикла FOR довольно длинная. ;)