Пакет, чтобы найти и скопировать папки из текстового списка
Я ищу пакет, чтобы найти и скопировать все папки, перечисленные в текстовом файле, в указанное место.
Например есть:
Textfile.txt с содержанием:
- 01
- 02
- 03
- 04
- и т.п.
Головная папка с подпапками.
Папки, которые я ищу (папки из Textfile.txt), могут быть размещены в каждой подпапке. Если я хочу найти и скопировать папки из Textfile.txt в указанное место. Мне нужно зайти все подпапки из головной папки
Дерево папок с примерами
- Домашняя папка
- Подпапки (11, 12, 13...)
- Папки (01, 02, 03, 04,)
Пожалуйста, помогите мне с созданием этой партии. Благодарю.
Дополнительная информация:
- Домашняя папка (главная папка) - Джон (папка) - 01 (папка) (может быть пустым, без каких-либо папок и файлов) - 11-е (папка) (может быть пустым, без каких-либо папок и файлов) - file1.txt (файлы) - file2.xls - 12-е место - 13-е место - 02 - 03 - 04 Томас - 05 - 11-е место - 12-е место - 13-е место - 06 - Ева Мартин - 07 - 11-е место - 12-е место - 15-е место - Джордж - 08
Мне нужно найти и скопировать целые папки 01, 02, 03, 04 и т. Д. Из Textfile.txt, даже если они пусты.
1 ответ
Следующее должно работать в командном файле:
FOR /F %%F IN (Textfile.txt) DO xcopy /I /E "C:\Source\%%F" "D:\Dest\%%F"
Вы также можете применить еще несколько ключей:
/C Continues copying even if errors occur.
/H Copies hidden and system files also.
/R Overwrites read-only files.
/Y Suppresses prompting to confirm you want to overwrite an
existing destination file.
Обновить
В вашем конкретном случае, когда у вас есть список папок, которые разбросаны по подпапкам, этот скрипт должен работать:
@echo off
set SRC_FOLDER="C:\Source"
set DST_FOLDER="C:\Destination"
REM this makes sure that if the first folder in list is empty - it is copied
IF NOT EXIST %DST_FOLDER% MKDIR %DST_FOLDER%
REM loop through the items in list; use one per line
REM for group match use <NAME>*
FOR /f %%F IN (%~dp0\Textfile.txt) DO (
REM loop through all folders
FOR /f "delims=" %%D IN ('DIR %SRC_FOLDER% /A:D /B') DO (
REM loop through FOLDER/NAME* sub-folders
FOR /f "delims=" %%G IN ('DIR %SRC_FOLDER%\"%%D\%%F" /A:D /B') DO (
IF EXIST %SRC_FOLDER%\"%%D\%%G" XCOPY /I /E %SRC_FOLDER%\"%%D\%%G" %DST_FOLDER%\"%%~nG"
)
REM loop through all FOLDER subfolders to catch NAME subfolders
FOR /f "delims=" %%G IN ('DIR %SRC_FOLDER%\"%%D" /A:D /B') DO (
IF "%%G" == "%%F" XCOPY /I /E %SRC_FOLDER%\"%%D\%%G" %DST_FOLDER%\"%%~nG"
)
)
)
- Обратите внимание, что параметр "delims=" необходим для правильной обработки путей с пробелами.
enter code here