参考:https://bbs.csdn.net/topics/392023993,9楼
我使用的是powershell执行此命令的,如下:
xcopy *.dat d:\mybackup /S
把当前目录及其子目录下的所有扩展名为 dat 的文件拷贝到 d:/mybackup 目录中,并保持它们原有的目录结构。
比如我当前的目录中有文件:
1.dat
2018\01.dat
2018\01.xls
2018\02.dat
2017\4\1.dat
2017\3\
在当前目录执行 xcopy *.dat d:\mybackup /S 之后,d:\mybackup 下的内容为:
1.dat
2018\01.dat
2018\02.dat
2017\4\1.dat
xcopy的相关参数:
/E : 同 /S 相比,则会把空目录也拷贝过来,如果使用 xcopy *.dat d:\mybackup /E,则 d:\mybackup 目录下的内容为:
1.dat
2018\01.dat
2018\02.dat
2017\4\1.dat
2017\3\
最后一行红色的部分就是拷贝过来的空目录
需要注意的是,目标路径,应该采用“\”分隔符而不是“/”,否则指定的目录名无效,比如我测试的时候使用
xcopy *.dat ../mybackup /E,结果所有的文件都以当前目录的上级目录为基础了,即相当于
xcopy *.dat .. /E
根据在拷贝过程中的观察,所谓不拷贝空目录,其实还是会先建立这个目录,如果发现这个目录中没有要拷贝的文件时,它会被删除掉,当然由于速度很快,我只观察到第一级目录,而其中的子目录则没有看到,不过我想应该也是会建立然后再删除这样的策略