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