关于使用xcopy实现无目录结构的跨子文件夹文件复制的问题
关于使用xcopy实现无目录结构的跨子文件夹文件复制的问题
嘿,我完全懂你的需求——你想把Y:\Server-MODS下面所有子文件夹里的文件全部平级复制到目标文件夹,彻底抛弃原来的目录结构,所有文件都堆在一起,对吧?
你之前用的xcopy /s /h /y /d /q之所以不符合预期,是因为/s参数的作用就是保留子目录结构进行复制,所以连带着原有的文件夹层级也被复制过去了,这显然不是你想要的效果。
要实现“只取文件、丢掉文件夹”的平级复制,我们可以结合Windows的for命令来递归遍历所有文件,再逐个复制到目标目录,具体命令如下:
基础复制(覆盖现有文件)
for /r "Y:\Server-MODS" %f in (*) do copy /y /h "%f" "C:\Users\User\Documents\My Games\FarmingSimulator2022\mods\"
增量复制(仅复制比目标新的文件,对应你原来的/d参数)
如果你想保留“只更新新文件”的特性,可以换成xcopy配合/d参数:
for /r "Y:\Server-MODS" %f in (*) do xcopy /d /y /h "%f" "C:\Users\User\Documents\My Games\FarmingSimulator2022\mods\"
给你解释下关键参数:
/r:让for命令递归遍历指定目录下的所有子文件夹,不放过任何深层文件%f:代表遍历到的每个文件的完整路径(注意:如果把命令写在批处理.bat文件里,要改成%%f)/y:覆盖目标文件夹中已存在的同名文件时不弹出提示/h:复制隐藏文件和系统文件,和你原来的需求匹配/d:只复制修改时间比目标文件新的文件,实现增量更新
最后再提两个小细节:
- 目标路径最后一定要加反斜杠
\,避免系统误把目标路径当成文件名处理 - 如果不想覆盖同名文件,去掉
/y参数即可,复制时会弹出确认提示
备注:内容来源于stack exchange,提问作者Peter Andres
相关产品推荐
相关产品推荐

