首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何复制目录结构但只包括某些文件(使用windows批处理文件)

如何复制目录结构但只包括某些文件(使用windows批处理文件)
EN

Stack Overflow用户
提问于 2009-01-23 12:18:37
回答 15查看 221.3K关注 0票数 116

正如标题所说,如何递归复制目录结构,但只包含一些文件。例如,给定以下目录结构:

代码语言:javascript
复制
folder1
  folder2
    folder3
      data.zip
      info.txt
      abc.xyz
    folder4
    folder5
      data.zip
      somefile.exe
      someotherfile.dll

文件data.zipinfo.txt可以出现在目录结构中的任何位置。如何复制完整的目录结构,但只包含名为data.zip和info.txt的文件(应忽略所有其他文件)?

生成的目录结构应如下所示:

代码语言:javascript
复制
copy_of_folder1
  folder2
    folder3
      data.zip
      info.txt
    folder4
    folder5
      data.zip
EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-01-23 12:25:13

你没有提到它是否必须是批处理的,但是如果你可以使用ROBOCOPY,试试这个:

代码语言:javascript
复制
ROBOCOPY C:\Source C:\Destination data.zip info.txt /E

编辑:将/S参数更改为/E,以包括空文件夹。

票数 185
EN

Stack Overflow用户

发布于 2009-07-09 14:48:23

另一种解决方案是一次复制一个文件,并且不需要ROBOCOPY:

代码语言:javascript
复制
@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_DIRSOURCE_DIR中保存了需要在DEST_DIR中创建的文件的子目录路径。

票数 29
EN

Stack Overflow用户

发布于 2012-12-19 04:40:52

尝试通过管道输出find (即文件路径)添加到cpio中

代码语言:javascript
复制
find . -type f -name '*.jpg' | cpio -p -d -v targetdir/

cpio检查目标文件上的时间戳--因此它安全而快速。

一旦你习惯了,为了更快的操作,删除-v。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/472692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档