ユーザ用ツール

サイト用ツール


csvの特定の列削除と項番付与1

文書の過去の版を表示しています。


【要件】 カレントディレクトリ内には複数のCSVファイルがある。 CSVファイルには種類があり、ファイル名に種類ごとに特定の文字列が含まれる。 CSVファイルの種類ごとに、必要な列だけを抽出し、項目番号を追加するスクリプトを作成する。 スクリプトはPowerShellを使用して作成する。 スクリプトはカレントディレクトリ内のすべてのCSVファイルに対して自動的に実行される必要がある。 スクリプトの出力は、元のファイル名に“_processed”を付加して新しいファイルに保存される。

# カレントディレクトリ内のすべてのCSVファイルを処理する
Get-ChildItem -Filter *.csv | ForEach-Object {
    if ($_.Name -like "*Type1*") {
        # Type1ファイルを処理する
        $data = Import-Csv $_.FullName  # ファイルを読み込む
        $data = $data | Select-Object column1, column3, column5  # 必要な列だけを選択する
        $data = $data | ForEach-Object { $_ | Add-Member -MemberType NoteProperty -Name "項目番号" -Value ($PSItem.PSObject.Properties.IndexOf('column1')+1) -PassThru }  # 項目番号を追加する
        $data | Export-Csv "$($_.BaseName)_processed.csv" -NoTypeInformation  # 処理結果を新しいファイルに保存する
    }
    elseif ($_.Name -like "*Type2*") {
        # Type2ファイルを処理する
        $data = Import-Csv $_.FullName  # ファイルを読み込む
        $data = $data | Select-Object column2, column4, column6  # 必要な列だけを選択する
        $data = $data | ForEach-Object { $_ | Add-Member -MemberType NoteProperty -Name "項目番号" -Value ($PSItem.PSObject.Properties.IndexOf('column2')+1) -PassThru }  # 項目番号を追加する
        $data | Export-Csv "$($_.BaseName)_processed.csv" -NoTypeInformation  # 処理結果を新しいファイルに保存する
    }
    # 他のファイルタイプについても同様に処理を追加する
}

このスクリプトは、Get-ChildItemコマンドレットを使用して、カレントディレクトリ内のすべてのCSVファイルを処理しています。ファイル名に含まれる文字列に基づいて、各ファイルを処理する方法を決定します。上記の例では、Type1とType2の2つのファイルタイプについて処理を行っています。各ファイルに対して、必要な列を選択し、項目番号を追加してから、新しいファイルに保存しています。他のファイルタイプについても同様に処理を追加することができます。新しいファイル名には“_processed”が付加されます。

csvの特定の列削除と項番付与1.1680687480.txt.gz · 最終更新: 2023/04/05 09:38 by 180.46.4.12

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki