【bat】バッチファイルでCSVを分割する方法

CSVファイルを効率的に処理する際、大きなファイルを複数の小さなファイルに分割することは、データの管理や分析に非常に役立ちます。この記事では、バッチファイルを使用してCSVファイルを特定の行数ごとに分割する方法について解説します。

分割するCSVファイルの準備

まず、分割したいCSVファイルを用意します。この例では、input.csvというファイルを使用します。あなたの環境に応じて、適切なCSVファイルを用意してください。

バッチファイルのスクリプト作成

次に、CSVファイルを分割するためのバッチファイルを作成します。以下のスクリプトを使用すると、指定した行数ごとにファイルが自動的に分割されます。

@echo off
setlocal enabledelayedexpansion

REM 入力ファイルと出力フォルダの指定
set "input_file=input.csv"
set "output_folder=output"
set "lines_per_file=1000"  REM 1つのファイルあたりの行数を指定

REM 出力フォルダが存在しない場合は作成
if not exist "%output_folder%" (
    mkdir "%output_folder%"
)

REM カウンタの初期化
set /a file_count=1
set /a line_count=0

REM 1行ずつ読み込み
for /f "tokens=*" %%A in (%input_file%) do (
    REM 行数カウント
    set /a line_count+=1
    
    REM 最初の行または行数が指定された数に達した場合、新しいファイルを作成
    if !line_count! equ 1 (
        set "output_file=%output_folder%\output_!file_count!.csv"
        echo Creating file: !output_file!
    )
    
    REM 行を出力ファイルに書き込み
    echo %%A>>!output_file!
    
    REM 行数が指定された数に達したらカウントリセットとファイル番号増加
    if !line_count! equ %lines_per_file% (
        set /a line_count=0
        set /a file_count+=1
    )
)

echo Done!
pause

スクリプトの詳細説明

このスクリプトでは、以下の項目を設定することで、CSVファイルを効率的に分割できます。

  • input_file: 分割対象のCSVファイルの名前(例: input.csv)。
  • output_folder: 分割されたファイルを保存するフォルダの名前(例: output)。
  • lines_per_file: 1つのファイルに保存する行数(例: 1000行)。

この設定により、指定された行数ごとにファイルが分割され、outputフォルダに保存されます。

バッチファイルの実行方法

バッチファイルを保存し、ダブルクリックして実行するだけで、分割されたCSVファイルが指定したフォルダに出力されます。この方法を使用すれば、大量のデータを簡単に処理することが可能です。

まとめ

バッチファイルを使用してCSVファイルを分割することで、データの管理がよりシンプルになります。今回の例では、行数ごとにファイルを分割しましたが、カスタマイズすることで様々なニーズに対応できます。是非、あなたのプロジェクトで試してみてください。