将具有特定名称的文件夹复制到另一个文件夹,同时保留文件夹结构

将具有特定名称的文件夹复制到另一个文件夹,同时保留文件夹结构

有很多说明如何将某些文件从一个文件夹复制到另一个文件夹并保留文件夹结构。我可以使用 xcopy [srcFolder][Filename] [DestFolder] /S /K /Y 来执行此操作。

但是,我需要的是搜索某个文件夹名称,然后将该文件夹及其所有内容复制到目标文件夹。假设我有以下内容:

SrcFolder   
   -Folder 1
          -MySubfolder
             -File1_1.txt
             -File1_2.jpg
          -AnotherSubfolder
             -File1_3.txt
    
   -Folder 2
          -MySubfolder
             -File2_1.txt
             -File2_2.jpg
          -AnotherSubfolder
             -File2_3.txt

现在我想复制所有“MySubfolder”文件夹及其内容。因此最后我的目标目录将如下所示

DstFolder
   -Folder 1
      -MySubfolder
         -File1_1.txt
         -File1_2.jpg
   -Folder 2
      -MySubfolder
         -File2_1.txt
         -File2_2.jpg

我该如何实现这一点?请注意,我使用的是 Windows 7,因此无法访问 robocopy

答案1

嗯,您可以使用任何 C 到 Java、VBS、PS 或好用的批处理脚本。如果您想走怀旧之路,我们开始吧:

CurrentDir
  + Love Letters
    my_love.txt
    breakup.txt
    new love.txt
  + Confidential
    + FBI
      + JFK Murder
        + eye witness report.txt
    + CIA
      + Area 51
        + UFO.jpg

脚本

@ECHO OFF

@SETLOCAL
@SET SearchPath=%1
@SET SearchForDir=%2
@SET DestinationDir=%3

@FOR  /f "delims=" %%a in ('dir /B /S /A:D "%SearchPath%" ^|findstr /e "%SearchForDir%"') DO @SET DirPath=%%~a

@xcopy "%DirPath%" "%DestinationDir%/%SearchForDir%" /S /K /Y /I

echo DirPath %DirPath%

@ENDLOCAL

@ECHO ON

(小提示,我把搜索设置为区分大小写,以便我的子文件夹会出现这样的情况,否则,由于 Windows 不区分大小写,您可能会在名为的目录中获得所需的所有内容我的文件夹如果这是你的搜索字符串)

您可以使用参数通过命令行调用它:

script.cmd <search_path> <dir_to_search_for> <destination_path> 

例如

script.cmd . "FBI" "D:\Public"

或者您可以手动设置本地环境变量并使用硬编码值手动运行它。您自己选择。

如果您想要更短的版本,只需将环境变量替换为参数变量即可。我这样做只是为了更容易理解。

相关内容