批处理命令进行文件夹及子级文件的复制

场景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

注意

  1. for循环在cmd命令窗口中使用的时候,变量i%i表示,但是在cmd文件中保存后运行时,cnd文件里的i要用%%i表示
  2. 路径中有中文的时候,可能会出现乱码,可以尝试转换编码格式,使用utf-8格式?使用ANSI格式?

参考文档

https://www.cnblogs.com/xpwi/p/9626959.html
https://www.cnblogs.com/liangblog/p/9835940.html

posted @ 2021-08-27 21:20  wl夏白  阅读(9662)  评论(0编辑  收藏  举报