2017-01-16 60 views
0

我想替換包含文件中換行符的字符串。我正在使用這個命令行。來自cmd的Powershell命令不會替換換行符

我想在CMD shell和PowerShell中使用相同的命令,但是我似乎只能使它在後者中工作。

下面是一個命令:

powershell -Command "(Get-Content client.properties -Raw).Replace('#test`r`n','test`r`n') | Set-Content client2.properties" 

爲什麼這不是在一個CMD殼工作,以及我如何工作的呢?

+0

你在這兩個殼運行字面上完全相同的命令,或CMD相當於PowerShell命令的? – gms0ulman

+0

你能更詳細地指定你的問題嗎?你正在寫它,它在PowerShell而不是cmd行。你必須使用普通的WIN命令行嗎? – Moerwald

+0

我運行完全相同的命令。我打開了一個cmd shell並運行它,我也試圖在bat文件中運行它。當我打開Powershell並運行命令時,它可以正常工作。我與Win 10一起工作。 – TinMan

回答

2

`r`n轉義序列在單引號內不起作用。

使用-replace操盤並使用正則表達式轉義:

powershell -Command "(Get-Content client.properties -Raw)-replace('#test\r?\n','test'+$([Environment]::NewLine)) | Set-Content client2.properties" 
+0

謝謝,換行符現在可以正確識別。但是,添加換行符不起作用。它只是將「test \ r?\ n」粘貼爲字符串。任何想法? – TinMan

+0

@亨娜呀,我的壞,更新的答案 –

+0

幾乎在那裏。現在我得到一個RuntimeException「-ireplace」只允許2個元素,而不是3個。如果我只使用「$([Environment] :: NewLine)」,它會起作用,所以不知怎麼連接測試和換行符是錯誤的。 – TinMan