2017-06-08 23 views
0

我有一個批處理可以執行網絡中某些文件的複製,該複製通過最新的情況將它們存在於目標文件夾中的最新情況更新但是,如果正在使用任何文件,則只有在您試圖更新文件的那一刻,系統纔會在最後顯示錯誤消息。如果有任何文件未被複制,則在複製結束時生成錯誤

目前我不想解決正在使用的這個文件問題,如果在更新某個文件時發生錯誤,我只希望命令僅在副本結束時進行報告。

如果"%errorlevel%" == "0",我把條件放在最後,但是如果在副本中間有錯誤,這個條件不起作用。

我的命令:

xcopy "C:\origin\." "C:\destination\" /c /d /e /h /i /k /r /y 
+0

您使用了/ c,即使出現錯誤,也會讓它繼續前進。只是不要使用它。 –

回答

1

我的建議對你是遍歷文件夾,並檢查每個文件正在使用,然後你可以寫文件的名稱,一些類型的日誌,也許是一個.txt文件稍後閱讀以顯示無法覆蓋的內容。

2>nul (
    >>FILE.EXT (call) 
) && (echo file is not locked) || (echo file is locked) 

此代碼,我發現在StackOverflow(dbenham值得所有這個信貸)可以用來檢查文件是否被鎖定。將FILE.EXT替換爲文件名,最好在循環中輕鬆檢查每個文件,並且如果文件被鎖定爲(臨時).txt文件的文件名並且一旦完成,則循環該文本文件以列出結果。

另一個好處是,如果您在覆蓋之前檢查正在使用的文件,則可以跳過您知道無法寫入的文件,從而爲每個文件節省一點時間。