使用 .bat 将具有指定名称的所有子文件夹复制到合并文件夹中

Copy all sub-folders with a specified name into a merged folder using .bat

我想复制名称为 "PHASE 1" 的所有子文件夹(包括这些文件夹的内容),并将它们的内容合并到另一个位置。

我当前目录中的示例文件:

Folder 1\PHASE 1\test1.pdf
Folder 2\PHASE 1\test2.pdf
Folder 3\PHASE 1\test3.pdf

我希望将这些复制到一个目录中,如下所示:

MASTER FOLDER\PHASE 1
>test1.pdf
>test2.pdf
>test3.pdf

我想创建一个循环来为第 2 阶段、第 3 阶段等重复此过程

这是我尝试过但没有成功的所有方法:

for /r "%cd%" %%x in ("PHASE 1") do copy /y "%%x" ""%cd%"\MASTER FOLDER"
for /f "delims=" %%A in ('dir /a:d /b /s "PHASE *"') do (
    xcopy /y "%%~A" "MASTER FOLDER\%%~nxA\"
)

看看 for /? 你可能会看到:

(set) Specifies a set of one or more files. Wildcards may be used.

PHASE 1 是一个文件夹名称,它似乎是 (set) 的无效值。

而不是 for /rfor /f 使用 dir 命令可以获得 匹配通配符模式的目录路径。

上面的代码使用dir来获取带有/a:d的目录, 使用 /s 和 returns 以 /b.

的裸格式递归

delims=for /f选项导致返回每条路径, 没有分裂成令牌。

xcopy 将每个匹配的目录路径复制到 MASTER FOLDER 目录中。

如果需要确保模式PHASE *的通配符匹配数字, 然后 dir 可以通过管道传输到 findstr 以过滤返回的路径。