スポンサーリンク

テキストファイルの先頭行を削除するPowerShellスクリプト

記事内に広告が含まれています。

CSVファイルなどのテキストファイルのヘッダー行を削除したいことがあると思います。

テキストファイルの先頭行を削除するPowerShellスクリプトをメモしておきます。

スポンサーリンク

サンプルコード

$inputFolder = 'C:\path\to\input\folder'  # 入力フォルダのパス
$outputFolder = 'C:\path\to\output\folder'  # 出力フォルダのパス

# 入力フォルダの全tsvファイルを処理
Get-ChildItem -Path $inputFolder -Filter *.tsv | ForEach-Object {
    $filePath = $_.FullName
    $outputFilePath = Join-Path $outputFolder $_.Name

    # ファイルの先頭行を削除して新しいパスに保存
    $content = Get-Content $filePath -Encoding UTF8 | Select-Object -Skip 1
    $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $false
    [System.IO.File]::WriteAllLines($outputFilePath, $content, $utf8NoBomEncoding)
}

入力フォルダの全てのTSVファイルを処理して、出力フォルダに格納するスクリプトです。

入力ファイル、出力ファイルともにUTF-8を指定しています。特に出力ファイルはUTF-8のBOM無しとしています。文字コードを指定しないと実行環境に依存するらしく、Shift-JISのファイルが出力されました。

スポンサーリンク

文字コード変更

別の文字コードでファイル操作を行いたい場合は、以下の個所を変更します。

    $content = Get-Content $filePath -Encoding UTF8 | Select-Object -Skip 1
    $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $false
    [System.IO.File]::WriteAllLines($outputFilePath, $content, $utf8NoBomEncoding)
ASCIIの場合

ASCIIの場合、以下のとおり変更します。

$content = Get-Content $filePath -Encoding ASCII | Select-Object -Skip 1
[System.IO.File]::WriteAllLines($outputFilePath, $content, [System.Text.Encoding]::ASCII)
UTF-16 LE(BOMなし)

.NETのUnicodeEncodingクラスを使用して、BOMなしのUTF-16 LEエンコーディングを指定します。

$content = Get-Content $filePath -Encoding Unicode | Select-Object -Skip 1
$unicodeNoBomEncoding = New-Object System.Text.UnicodeEncoding $false, $false
スポンサーリンク
Windows
著者SNS
タイトルとURLをコピーしました