如何复制某一级别的所有文件夹,但不复制文件或子文件夹?

如何复制某一级别的所有文件夹,但不复制文件或子文件夹?

我想知道如何将所有文件夹复制到新位置,但我只想包含文件夹本身 —— 不包含文件夹内的任何内容(因此,没有子文件夹,也没有文件)。这可能吗?

此外,与此相关,是否还有一种方法可以复制所有文件夹以及这些文件夹内的子文件夹,但只有 1 级深度(因此只有直接子文件夹,而不是子文件夹内的子文件夹),并且仍然不复制任何文件。

我愿意通过任何方式来执行此操作——命令行,或通过实用程序。

答案1

使用 Microsoft 实用程序robocopy

robocopy SOURCE_FOLDER DEST_FOLDER /E /LEV:1 /XF * 

选项:

  • /E复制子文件夹,包括空子文件夹
  • /LEV:1仅复制源树的前 n 个级别。
  • /XF *排除与给定名称/路径/通配符匹配的文件。

来源:http://ss64.com/nt/robocopy.html

答案2

补充一下 Steven 的回答,似乎如果您想要文件夹 X 内的所有文件夹,则需要指定文件夹 X 作为源,然后使用/LEV:2,而不是/LEV:1(我猜/LEV:1只是文件夹 X)。这就是我刚才的方法。

(本来想将此作为评论添加以回复 Steven 的回答,但我没有权限(声誉低)。

答案3

使用命令行,如果您只想复制空文件夹,即在新的位置创建文件夹,比如 c:...: 上的某个位置

set newlocation=c:\...
@for /f "tokens=3,4" %i in ('dir') do @if "%i" equ "<DIR>" if "%j" neq "." if "%j" neq ".." mkdir %newlocation%\%j

如果要更深入一层,就再重复一次 for 循环:

@for /f "tokens=3,4" %i in ('dir') do @if "%i" equ "<DIR>" if "%j" neq "." if "%j" neq ".." mkdir %newlocation%\%j && for /f "tokens=3,4" %u in ('dir %j') do @if "%u" equ "<DIR>" if "%v" neq "." if "%v" neq ".." mkdir %newlocation%\%j\%v

请注意,如果您想将其放入批处理文件中,请将所有内容替换%%%

相关内容