2017-01-16 12 views
0

ファイル内の改行を含む文字列を置き換えようとしています。私はこれにコマンドラインを使用しています。cmd doesntのpowershellコマンドが改行を置き換えます

私はCMDシェルとPowerShellで同じコマンドを使用しようとしていますが、後者では動作するように見えます。ここで

はコマンドです:

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

は、なぜこれがCMDシェルで動作していない、そしてどのように私はそれを動作させるのですか?

+0

を、あなたは文字通り、両方のシェルでまったく同じコマンド、またはPowerShellコマンドのCMD相当を実行しましたか? – gms0ulman

+0

問題をより詳細に指定できますか? PowerShellで動作し、cmd行では動作しないと書いています。通常のWINコマンドラインを使用していますか? – Moerwald

+0

Iveはまったく同じコマンドを実行します。私はcmdシェルを開き、それを実行し、私も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

@Hennaええ、私の悪い、更新された答え –

+0

ほとんどそこにあった。私は "$([Environment] :: NewLine)"だけを使用すると動作しますので、何とかテストの連結と改行が間違っています。 – TinMan

関連する問題