指定ファイルの改行コードを変更する
以下は読み込みファイル名(sjis_crlf.txt)と出力ファイル名を同じにしているので、結果自身のファイルの改行コードを変更する事になっています。この時ポイントはGet-Contentを丸かっこで囲んでいる点です。パイプは通常左辺を実行しつつその結果を右辺に流すイメージですが括弧で左辺を囲む事で評価順番が変わり『一旦全てINPUTファイルが全てメモリに読まれる』ため、「読みながら自身を更新する」事が可能になるのだとおもいます。
V5.1の環境
# 赤()を外すと以下のようなエラーとなり自身のファイルの書き換えができません
# Set-Content : 別のプロセスで使用されているため、XXXXX にアクセスできません。
#
(Get-Content .\sjis_crlf.txt -Encoding default) | % { $_ + "`n" } | Set-Content -LiteralPath .\sjis_crlf.txt -NoNewline -Encoding default
V7.2の環境
V7.2の環境(V6以降との事)では encodingのデフォルトが「utf8NoBOM」になっているので、今回のケースだとshift_jisを明示的に指定する事になります。
(Get-Content .\sjis_crlf.txt -Encoding shift_jis) | % { $_ + "`n" } | Set-Content -LiteralPath .\sjis_lf.txt -NoNewline -Encoding shift_jis
Shift-JISファイルの改行コードをLFに変更する
上記に従いバージョンによってはencodingは適宜変更して使ってください。
(Get-Content .\sjis_crlf.txt -encoding default) | % { $_ + "`n" } | Set-Content -LiteralPath .\sjis_crlf.txt -NoNewline -encoding default
Shift-JISファイルの改行コードをCRLFに変更する
上記に従いバージョンによってはencodingは適宜変更して使ってください。
(Get-Content .\sjis_crlf.txt -encoding default) | % { $_ + "`r`n" } | Set-Content -LiteralPath .\sjis_crlf.txt -NoNewline -encoding default
フォルダ内ワイルドカード指定ファイル全ての改行コードを変更する
以下はShift-JIS想定のファイルですが、2か所のencodingは忘れず変更して使ってください。(ちなみにutf-8の場合はUTF8です)
LFに変更する場合
ls *.txt | % { (get-content -encoding Default $_.FullName) | % { $_ + "`n" } | Set-Content -LiteralPath $_.FullName -NoNewline -Encoding default }
CRLFに変更する場合
ls *.txt | % { (get-content -encoding Default $_.FullName) | % { $_ + "`r`n" } | Set-Content -LiteralPath $_.FullName -NoNewline -Encoding default }