
我有一個 USB 隨身碟,其中有一個名為 X 的資料夾,它始終與筆記本上的資料夾 Y 類似,反之亦然,具體取決於最新的操作。例如,如果我刪除資料夾 Y 中的某些內容,則它也必須在資料夾 X 中刪除(一旦插入隨身碟),反之亦然。如果我在 X 中新增資料夾或文件,則插入隨身碟後,也必須將其新增至 Y 。
現在我使用 robocopy 製作了一個簡短的批次腳本:
@echo off
robocopy "D:\AC ActiveZone Mobile" "C:\AC ActiveZone" /MIR
PAUSE
ActiveZone Mobile 資料夾是我們的資料夾 X,ActiveZone 是我們的資料夾 Y。我將證明:
1.) 兩個資料夾及其子資料夾和檔案都是 ident 2.) 在資料夾 X 中建立新檔案 T1 3.) 在資料夾 Y 中建立新檔案 T2 4.) 執行腳本
結果:資料夾 X 和 Y 中不再有 T1 和 T2,而是現在資料夾 X 和 Y 都只有 T1。
另外,(在上面的第一次測試之後)如果我刪除資料夾 Y 中的 T1 並運行腳本,我得到的只是資料夾 Y 中的新 T1。希望X中的T1也被刪除,而不是T1從X複製到Y。
如何使用批次腳本完成此任務?
答案1
嗯,簡單。只需兩種方式運行它,排除舊文件:
@ECHO OFF
ECHO Two way mirror between %1 and %2, continue?
PAUSE
robocopy %2 %1 /E /DST /FFT /XO /XJ
robocopy %1 %2 /E /DST /FFT /XO /XJ
如果文件存在於兩個位置,這應該保留較新的副本。我使用 /DST 和 /FFT,因為 NTFS/FAT32 時間戳差異通常會導致錯誤的無效比較。我個人也排除了 Thumbs.db、desktop.ini 等。
如果您想要刪除不存在的文件,您必須決定哪個是「主」位置,將其放在第二行並將 /E 變更為 /MIR。我認為,如果沒有某種超出 robocopy 所能做的跟踪,您想要知道一個文件是否從一個或另一個中刪除,而不是一個簡單地沒有另一個文件,那麼您的想法是不可能的。