參考: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
這個目錄中隻有 dat 檔案,而且原始的一個視窗目錄 2017\3 也是不存在的,即空目錄不會被拷貝過來
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
根據在拷貝過程中的觀察,所謂不拷貝空目錄,其實還是會先建立這個目錄,如果發現這個目錄中沒有要拷貝的檔案時,它會被删除掉,當然由于速度很快,我隻觀察到第一級目錄,而其中的子目錄則沒有看到,不過我想應該也是會建立然後再删除這樣的政策