假設有一A目錄,底下分別有A1,A2,A3,A4….的子目錄,而各子目錄底下都有一個檔案,請問要如何把A1,A2,A3,A4….下的檔案全部複製到B目錄,但不建立A1,A2,A3,A4….的目錄結構。

使用xcopy
/s是會在B底下同步建立A1,A2,A3,A4….等目錄,故不適用。

  1. @echo off
  2. set temp_file=4892346928364.txt
  3. if exist %TEMP%\%temp_file% echo 卡家雖小….
  4. rem 以上是隨便加的, 以下才是主要功能….
  5. dir /a-d /b /s A目錄 > %temp_file%
  6. for /F “delims=”” %%f in (%temp_file%) do copy “%%f” B目錄
  7. rem 注意幾點:
  8. rem 1. 批次檔內, 變數的 % 或 %%
  9. rem 2. for /F 功能在 XP 或 Server 2003 測試 OK , 其他版本不保證.
  10. rem 3. for /F 要加上 “delims=”” 避免目錄或檔名有空白造成異常.
  11. rem 4. 實作時 A目錄 跟 B目錄 要自己改名, 另外要注意同名問題.
  12. rem 5. 如果當備份用, 要注意時差引起的問題. 例如隔天複製時檔案已經存在的異常.
  13. rem 6. 這方法需要有暫存區放一個檔.
  14. rem 7. 只能滿足您題意需要, 無法處理衍生的問題, 例如但不限於: B目錄 空間不足.
  15. set temp_file=

@for /R A目錄 %%f in (*) do @copy “%%f” B目錄

最後修改日期: 2014-07-30

作者

留言

撰寫回覆或留言