2013-03-27 70 views
0

在我的sceniro中,我正在檢查特定文件夾中的文件並檢查它是否存在。如果它存在,我正在做一些操作。 但我的問題是,這些文件正在由其他進程生成[通常需要20-30分鐘來生成文件],所以例如在任何情況下,當我檢查文件夾中的文件,我發現它。現在,我需要確保它現在不在處理中,以便我可以繼續我的操作。下面的代碼片段裏面我是用:確定該文件沒有被任何其他進程使用

編輯 我的問題是這樣的,我怎麼能識別該文件是未使用(或如何產生)的其它過程。

$Filesitems = Get-ChildItem -Path "D:\SomeFolder\Sub_Folder" 


foreach ($objItem in $Filesitems) 
{ 

     if ($objItem.Name.Contains("Process")) 
     { 
      Write-Host $objItem.Name 
     } 
} 
+0

@joachim我的問題是這樣的,我怎麼能識別該文件是未使用(或正在生成)通過其他進程。 – Zerotoinfinity 2013-03-27 16:54:30

+0

是否可以在臨時目錄中生成文件,並在完成後將其移動到正確的位置? – 2013-03-27 16:55:42

+0

我無法控制這個過程。僅在該文件夾上生成文件。 – Zerotoinfinity 2013-03-27 16:56:52

回答

0

我可能會嘗試使用「鎖定」文件來避免這種行爲。

確保每當該進程在文件上工作時,該進程還會生成(空)file.lock文件,並在該進程完成文件處理時將其刪除。

在這種情況下,你可以檢查鎖文件是否存在,所以你知道,另一個進程仍在研究該特定文件

+0

這是一個很好的建議,但我無法控制這個過程。 ( – Zerotoinfinity 2013-03-27 16:56:03

+0

)在文件末尾有什麼東西總是寫得最後,就像EOF或其他類似的文件一樣嗎? ...否則你將不得不掉到文件系統級別,看看你是否能找出在什麼狀態下文件是。我不知道如何做到這一點,我很害怕:) – 2013-03-27 16:57:39

+0

文件生成一些列和行分隔符,但這不會幫助我們。但是,你的意思是像IsReadOnly這樣的Filestram屬性可以在這些情況下工作嗎? – Zerotoinfinity 2013-03-27 17:00:59

相關問題