我如何递归地复制目录结构,只复制底层(Windows批处理)的文件



我的目录结构是这样的;

folder1
  folder2 (thousands of folders like this)
    folder3
        someImage.jpeg
        someDoc.doc
        folder4 (optional folder)
           someImage.jpeg
           someDoc.doc

我希望脚本复制文件夹2s,其中包含文件夹4s维护文件夹结构,但只复制文件夹4中的文件。像这样的;

folder1
  folder2 (thousands of folders like this)
    folder3
      folder4 (optional folder)
        someImage.jpeg
        someDoc.doc

我有一个简单的for循环,可以识别包含文件夹4的文件夹,然后将文件复制到某个目录。我不知道如何复制整个文件夹结构,同时跳过文件夹3中的文件。

xcopy命令中有一个创建目录树的选项。

  /T           Creates directory structure, but does not copy files. Does not
               include empty directories or subdirectories. /T /E includes
               empty directories and subdirectories.

先做,然后复制文件夹4s中的文件

正如@Andryi在他的评论中指出的,你不能明确地确定一个文件夹是否是树结构中最低的。所以你必须提前决定哪一个你想考虑低到可以开始复制。假设你决定它是结构中的第四个文件夹。在这种情况下,使用以下代码开始。

@echo off
for /d %%a in (*.*) do (
  echo  %%a
  for /d %%b in (%%a*.*) do (
    echo  %%b
    for /d %%c in (%%b*.*) do (
      echo  %%c
      for /d %%d in (%%c*.*) do (
        echo  %%d
        for    %%f in (%%d*.*) do (
          echo  %%f
        )
      )
    )
  )
)

最新更新