正如标题所说,如何递归复制目录结构,但只包含一些文件。例如,给定以下目录结构:
folder1
folder2
folder3
data.zip
info.txt
abc.xyz
folder4
folder5
data.zip
somefile.exe
someotherfile.dll
文件data.zip和info.txt可以出现在目录结构中的任何位置。如何复制完整的目录结构,但只包含名为data.zip和info.txt的文件(应忽略所有其他文件)?
生成的目录结构应如下所示:
copy_of_folder1
folder2
folder3
data.zip
info.txt
folder4
folder5
data.zip
发布于 2009-01-23 12:25:13
你没有提到它是否必须是批处理的,但是如果你可以使用ROBOCOPY
,试试这个:
ROBOCOPY C:\Source C:\Destination data.zip info.txt /E
编辑:将/S
参数更改为/E
,以包括空文件夹。
发布于 2009-07-09 14:48:23
另一种解决方案是一次复制一个文件,并且不需要ROBOCOPY:
@echo off
setlocal enabledelayedexpansion
set "SOURCE_DIR=C:\Source"
set "DEST_DIR=C:\Destination"
set FILENAMES_TO_COPY=data.zip info.txt
for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
if exist "%%F" (
set FILE_DIR=%%~dpF
set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=!
xcopy /E /I /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!"
)
)
外部的for语句生成SOURCE_DIR
中的子目录和FILENAMES_TO_COPY
中的名称的任何可能的路径组合。对于每个现有文件,都会调用xcopy。FILE_INTERMEDIATE_DIR
在SOURCE_DIR
中保存了需要在DEST_DIR
中创建的文件的子目录路径。
发布于 2012-12-19 04:40:52
尝试通过管道输出find (即文件路径)添加到cpio中
find . -type f -name '*.jpg' | cpio -p -d -v targetdir/
cpio检查目标文件上的时间戳--因此它安全而快速。
一旦你习惯了,为了更快的操作,删除-v。
https://stackoverflow.com/questions/472692
复制相似问题