如何使用Robocopy将多子文件夹中的指定文件复制到单个目标文件夹?
如何使用Robocopy将多子文件夹中的指定文件复制到单个目标文件夹?
你遇到的这个情况太常见了——Robocopy的设计就是默认保留源目录的层级结构,所以用/E参数肯定会把所有嵌套的文件夹(哪怕是空的)都带到目标路径里,确实很头疼。可惜Robocopy本身没有专门的「扁平化复制」参数,但我们可以用Windows命令行的循环命令配合它,轻松实现你要的效果:搜索所有子文件夹里的.ai文件,然后全部复制到同一个目标文件夹,不创建任何子目录。
直接用这条命令就行(在命令提示符里直接运行):
for /r "C:\Files" %f in (*.ai) do robocopy "%~dpf" "C:\IllustratorConversion" "%~nxf" /dcopy:T /MT
我给你拆解一下这条命令的关键部分:
for /r "C:\Files":递归遍历C:\Files目录下的所有子文件夹%f in (*.ai):筛选出所有.ai格式的文件robocopy "%~dpf" "C:\IllustratorConversion" "%~nxf":这里%~dpf代表当前文件所在的源目录,%~nxf是当前文件的「文件名+扩展名」,这样Robocopy只会把单个文件复制到目标文件夹,不会带过来任何子目录结构/dcopy:T和/MT:保留了你原来需要的参数,分别用于保留文件的时间戳、启用多线程复制提升效率
如果是要写在批处理(.bat)文件里运行,记得把命令里的%f改成%%f,批处理里的循环变量需要双百分号:
@echo off for /r "C:\Files" %%f in (*.ai) do robocopy "%%~dpf" "C:\IllustratorConversion" "%%~nxf" /dcopy:T /MT
最后提醒一句:如果不同子文件夹里有重名的.ai文件,Robocopy默认会覆盖目标文件夹里已有的同名文件。要是想避免覆盖,可以根据需求加参数:
- 加上
/XN:不替换目标文件夹里比源文件新的文件 - 加上
/XO:不替换目标文件夹里比源文件旧的文件
备注:内容来源于stack exchange,提问作者plamobot
相关产品推荐
相关产品推荐

