Windowsで複数のファイルを統合したいことがあり、せっかくなのでPowerShellを使った。普通にPowerShellを使うと、基本ShiftJISだったので、PowerShell7を使った。
書いたスクリプト
test.ps1
# 文字列をファイルに出力
function WriteToFile($str) {
# ファイル先頭の改行を削除
$str = $str -replace "^\r\n", ""
# 改行の繰り返しを削除
$str = $str.Replace("`r`n`r`n", "`r`n")
$str = $str.Replace("`r`n`r`n", "`r`n")
# ファイルに出力
$str | Out-File -FilePath hoge.txt -Append
}
# ファイルの内容を取得して関数に渡す
$content = (Get-Content "C:\tmp\archive1.txt" -ReadCount 0) -join "`r`n"
WriteToFile($content)
$content = (Get-Content "C:\tmp\archive2.txt" -ReadCount 0) -join "`r`n"
WriteToFile($content)
$content = (Get-Content "C:\tmp\archive3.txt" -ReadCount 0) -join "`r`n"
WriteToFile($content)
概要:C:\tmp\archive1.txt~C:\tmp\archive3.txtの内容を読み込んで、現在のディレクトリのhoge.txtに書き込む。
# ファイル先頭の改行を削除
$str = $str -replace "^\r\n", ""
# 改行の繰り返しを削除
$str = $str.Replace("`r`n`r`n", "`r`n")
ファイル先頭に改行があったり、空白行が多かったりしたので調整している。
(Get-Content "C:\tmp\archive1.txt" -ReadCount 0) -join "`r`n"
取得したファイル内容の改行コードをCRLFにする。(1行ずつ配列にして\r\nでJOINしている)
スクリプトの実行
スクリプトを「**.ps1」というファイル名で保存し、PowerShellプロンプトからファイルを実行する。
PowerShell上からスクリプトを実行する
PowerShell7のインストール
以下より環境にあったものをインストールする。
Windows への PowerShell のインストール