У меня есть список папок, из которых я хотел бы скопировать все содержащиеся в них файлы. Список папок хранится в отдельной строке текстового файла (.txt). Все файлы должны быть скопированы в одно и то же место.
Как выполнить это упражнение, используя этот список папок в сочетании с функцией копирования в командной строке?
решение1
Рассмотрим файл с похожим содержимым, содержащий список каталогов, например:
c:
c:\users
c:\anyotherfolder
xcopy
внутри for
цикла будет сделано то же самое :)
for /f %a in (list.txt) do xcopy /e %a\* c:\destination_folder\
(копируя все дерево каталогов (благодаря /e
) )
%
Если вы хотите сохранить и выполнить переменную в отдельном .bat
файле, следует добавить к ее имени дополнительный символ .
решение2
Я взял код Элвина и немного доработал его, чтобы решить проблему включения пробелов в пути и имена папок.
Команда For Do теперь использует CSV-файл для получения путей к папкам. Раньше было необходимо включить эту "delims=,"
опцию в команду For.
for /f "delims=," %a in (D:\Batch_Files\Test_Bench\Folders_List.csv) do copy "%a\*" D:\Batch_Files\Test_Bench\Paste_All_The_Files_Here
Записи, разделенные запятыми, позволяют получить For /f
доступ к местоположениям, содержащим пробелы, но только если токен %a\*
заключен в « ».