我正在從硬盤中恢復文件,其中一些文件不可讀。我無法更改硬件級別的超時/ ERC,當我有幾十萬個文件時,解決這個問題非常困難,其中成千上萬個文件可能無法讀取。超時複製項目
數據問題是控制器故障的結果。購買一個匹配的驅動器(一路下來),我已經能夠訪問驅動器,並且可以複製大量的驅動器而沒有問題。但是,整個驅動器中存在無法讀取的文件,訪問時會導致SATA總線掛起。我使用了各種可恢復的文件複製應用程序,如robocopy
,RichCopy和其他十幾個應用程序,但它們都有相同的問題。它們有一個RETRY計數,它基於實際獲取驅動器報告的錯誤。問題是驅動器花費很長時間來報告錯誤,這意味着單個文件可能需要長達一個小時才能正式失敗。我知道每個文件應該有多快,所以我想要構建一個powershell CMDLET或類似的文件,以允許我傳入源文件名和目標文件名,並讓它嘗試複製文件。如果在5秒後文件沒有被複制(或者它有 - 這可能是一個愚蠢的過程),我希望它退出。我將編寫一個腳本,它可以逐個觸發每個複製過程,在完成過程之前等待過程,但是我至今無法找到一個對過程進行時間限制的好方法。
你可能會有任何建議,將不勝感激!
編輯:我會很高興在新線程中產生一個Copy-Item
,帶有一個新的PID,然後倒計時,然後殺死該PID。我只是PowerShell的新手,並且看到了很多衝突的方法來強加定時器,以至於我失去了最佳實踐方式。
編輯2:請注意,像robocopy
這樣的應用程序將在遇到磁盤的不良區域時完全掛起。這些不是簡單的掛起,而是窗戶爲了不丟失數據而試圖保存的公共汽車。在這些情況下,任務管理器無法終止進程,但是Process Explorer IS。我不確定方法學有什麼不同,但無論如何,這似乎都是相關的。
[ROBOCOPY](https://technet.microsoft.com/en-us/library /cc733145(v=ws.11).aspx)/ w:10/r:1 – lloyd
@lloyd這將在超時+ 10秒後重試一次。 –
Lloyd,在這種情況下,Robocopy沒有收到驅動器發送的操作失敗的消息,因此重試計數無關緊要。該驅動器會坐下來愉快地假裝它仍然提取許多小時(每個文件)的數據,所以它永遠不會合理地進入重試計數器。 –