Ответ
Предполагая, что вы имеете в виду целевой каталог (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 довольно длинная. ;)