2014-10-02 49 views
2

我正在嘗試爲鎖定機制使用文本文件。PowerShell打開文件只寫(用於鎖定)並執行「觸摸」以更改文件的上次修改日期

這個想法是,一旦PowerShell腳本運行並持有文件句柄,其他進程將無法打開它,並將等待它釋放。

$file = [System.io.File]::Open('D:\file.lock', 'Open', 'Read', 'None') 
$reader = New-Object System.IO.StreamReader($file) 
$text = $reader.ReadToEnd() 
$text | Out-File $file 
$reader.Close() 
$file.Close() 

鎖定運作良好,但我想,一旦腳本釋放文件,它應該做一個「觸摸」,使文件的最後修改日期將變更

礦的問題代碼$text | Out-File $file因爲它沒有做的事情

我如何保存文件,或做一個「觸摸」

回答

4

這可能是因爲manualy設置lastwritetime一樣簡單:

(ls $file).LastWriteTime=(get-date) 

編輯: 你可以使用這個(但爲我們打開它寫入無法讀取文件內容)

$file = [System.io.File]::Open('c:\temp\test.txt', 'append', 'Write', 'None') 
$enc = [system.Text.Encoding]::UTF8 
$msg = "This is a test" 
$data = $enc.GetBytes($msg) 
$file.write($data,0,$data.length) 
$file.Close() 
+0

它工作時,我只運行此命令,但是我希望它發生在我打開文件之後,在關閉它之前。它不會改變它。 – user829174 2014-10-02 08:20:28

+1

是否嘗試將acces模式更改爲readwrite:'$ file = [System.io.File] :: Open('D:\ file.lock','Open','ReadWrite','None')' – 2014-10-02 08:33:06