2017-02-24 52 views
0

所以我試圖做一些簡單的文本操作。我發現,當只使用下面的代碼,它工作正常寫入不同名稱的文件:PowerShell寫入文件導致無限循環

PS C:\Users\uzfm> Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"} > .\pathSystem1.txt 

但是,如果我嘗試只是簡單地覆蓋原來的文件中像這樣的:

PS C:\Users\uzfm> Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"} > .\pathSystem.txt 

的命令被困在一個無限循環中,我試圖在覆蓋文件時試圖理解這個功能的潛在原因。

如果有一種方法,也將讚賞也。

+0

什麼pathsystem.txt文件的內容。您能否提供樣本 –

+0

它實際上只是路徑變量的一個csv文本文件。即C:\ Sybase32 \ DBISQL \ bin; C:\ Sybase32 \ DataAccess \ ADONET \ dll; C:\ Sybase32 \ DataAccess \ OLEDB \ dll; C:\ Sybase32 \ OCS-15_0 \ lib3p; C:\ Sybase32 \ OCS -15_0 \ DLL; C:\ Sybase32 \ OCS-15_0 \ bin中; C:\ Sybase64 \ DBISQL \ BIN; C:\ Sybase64 \ DataAccess64 \ ADONET \ DLL; C:\ Sybase64 \數據訪問\ ADONET \ DLL; C:\ Sybase64 \ DataAccess64 \ ODBC \ DLL; C:\ Sybase64 \ DataAccess \ ODBC中\ DLL; C:\ Sybase64 \ DataAccess64 \ OLEDB \ DLL; C:\ Sybase64 \數據訪問\ OLEDB \ DLL; – labowski2944

+0

[Powershell的出文件清除來自本身管道當文件](// stackoverflow.com/q/42445471)基本上是相同的問題。只需將第一部分括在括號內。 – wOxxOm

回答

0

嘗試加括號,執行讀取全部結束,並可以寫入同一個文件,這樣

(Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"}) > .\pathSystem.txt 

或像這樣:

(Get-Content .\pathSystem.txt) -replace ";","`r`n" > .\pathSystem.txt