场景1-单目录复制
将目录dir下的所有文件复制到目录dir2下
bat复制
使用xcopy命令,具体可参考百度百科
@echo off
:: 要复制的文件夹
set SOUECE=F:\dir
:: 复制到的目录
set DESTINATION=F:\dir2
xcopy %SOUECE% %DESTINATION%\ /s/y
pause
/s
:复制目录和子目录,除了空的。/y
:取消提示,直接覆盖
场景2-多目录复制
目录dir下有很多文件夹,每个文件夹下都有子文件夹dir3,现在要将dir目录下所有文件夹里面的dir3里的文件复制到目录dir2下
bat复制
使用for循环和xcopy
for循环的使用方式:for [参数] %%变量名 in (匹配符) do (执行的命令)
,do 里面的东西可以通过括号括起来,否则无法进行换行
@echo off
:: 要复制的文件夹
set SOUECE=F:\dir
:: 复制到的目录
set DESTINATION=F:\dir2
for /d %%i in (%SOUECE%\*) do (
xcopy %%i\dir3 %DESTINATION%\ /s/y/i)
pause
for后面的/d
表示遍历当前路径的文件夹下的文件夹,如果不加,会获得dir目录下的所有文件名
shell复制
使用shell中的cp命令
cp -r F:/dir/*/dir3/* F:/dir2
使用shell进行复制,不用for循环,而且可以多次使用通配符
cp -r F:/dir/*/dir4/*/*/dir3/* F:/dir2
cp -r F:/dir/*/dir4/*/*/dir3/*.txt F:/dir2
注意
-
for
循环在cmd命令窗口中使用的时候,变量i
用%i
表示,但是在cmd文件中保存后运行时,cnd文件里的i
要用%%i
表示 - 路径中有中文的时候,可能会出现乱码,可以尝试转换编码格式,使用utf-8格式?使用ANSI格式?
参考文档
https://www.cnblogs.com/xpwi/p/9626959.html
https://www.cnblogs.com/liangblog/p/9835940.html