XCOPY копирует все содержимое каталога, а не только файлы и папки, указанные в файле

Я пытаюсь рекурсивно скопировать набор файлов и папок из каталога. Набор файлов указан в текстовом файле. Вот мой сценарий:

set src_folder=C:\Users\mmhuqx\HW
set dst_folder=C:\Unix2Windows
set filelist=C:\Unix2Windows\filelist-tm.txt
echo Origen: %src_folder%
echo Destino: %dst_folder%
echo.

for /f "delims=" %%i in (%filelist%) do (
    xcopy  /s /y "%src_folder%\%%i" "%dst_folder%"
)

Но когда я запускаю сценарий, он копирует все содержимое каталога, включая файлы и папки, не указанные в текстовом файле.

Как я могу заставить его работать с помощью XCOPY, или это невозможно?


person user880222    schedule 17.08.2011    source источник
comment
Я проверил ваш скрипт. Меня устраивает. Что выводит командная строка при выполнении скрипта? Может быть, это дает вам указатель.   -  person Kai    schedule 17.08.2011
comment
Вот содержимое filelist-tm.txt:   -  person user880222    schedule 17.08.2011
comment
В частности, нет указателя. Скрипт копирует все из C:\Users\mmhuqx\HW, а это огромное количество файлов и папок. Но цель состоит в том, чтобы скопировать только те файлы, которые указаны в текстовом файле (filelist-tm.txt). Вот содержимое текстового файла: top_level \ modem_debug top_level \ modem_debug top_level \ modem_release top_level \ modem_debug \ aeneas_fww.fls top_level \ modem_debug \ cds top_level \ modem_debug \ nvm_sam _ *. Cfg top_level \ nvm_debug \ psi.fls top_level \ modem_debug \ platform. axf TOP_LEVEL\MODEM_DEBUG\PlatforTOP_LEVEL\MODEM_DEBUG TOP_LEVEL\MODEM_RELEASE TOP_LEVEL\MODEM_DEBUG\AENEAS_FW   -  person user880222    schedule 17.08.2011
comment
Вы можете помочь, сказав, что случилось?   -  person user880222    schedule 17.08.2011


Ответы (1)


Ваш filelist-tm.txt кажется неправильным. Он содержит, например, запись TOP_LEVEL\MODEM_DEBUG. Таким образом, этот каталог копируется полностью со всеми его файлами.

Кажется, вы хотите скопировать только TOP_LEVEL\MODEM_DEBUG\AENEAS_FW.fls. Так что ваш filelist-tm.txt должен содержать только эту запись.

person Kai    schedule 17.08.2011
comment
Спасибо за ваши комментарии. Но я все еще не уверен, понял ли я, что вы имели в виду. Я хочу скопировать не только файл TOP_LEVEL\MODEM_DEBUG\AENEAS_FW.fls, но и перечисленные файлы и сохранить ту же структуру каталогов при копировании. Но скрипт в настоящее время копирует все. Можно ли использовать XCOPY для того, что я задумал? - person user880222; 18.08.2011
comment
Ваш скрипт не сохраняет структуру каталогов, потому что вы позволяете xcopy копировать файлы в %dst_folder%. Возможно, вы сможете исправить это, если измените это на %dst_folder%\%%i. В своем ответе я имел в виду, что ваш список файлов не должен содержать записи, указывающие на каталог. Он должен содержать только те файлы, которые вы хотите скопировать. - person Kai; 18.08.2011
comment
На самом деле я тоже пробовал это, оставив все записи каталога из текстового файла. Но все же он копирует не только набор файлов, но и всю структуру каталогов. Спасибо, в любом случае. Не уверен, что xcopy является подходящим инструментом для этого. - person user880222; 18.08.2011