CSVファイルをバッチファイルで結合するツールを作成した理由
業務でCSVファイルを結合する機会が増えたので、最初はヘッダーを含むCSVファイルを読み込み、2番目以降はヘッダーを含まないCSVファイルを読み込んで、1つのCSVファイルにするバッチファイルを探したのですが、なさそうだったので作ってみました。自由にお使い頂いてOKです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
@echo off for /f "usebackq tokens=2 DELIMS=:" %%t in (`chcp`) do set code=%%t setlocal enabledelayedexpansion if "%1" == "" ( echo Output file is not set. goto end ) if not "%4" == "" ( echo Too many parameters. goto end ) if "%1" == "-isjis" ( if not "%code%" == "932" ( chcp 932 ) ) else if "%1" == "-iutf8" ( if not "%code%" == "65001" ( chcp 65001 ) ) else ( goto end ) set file="%2" if exist %file% ( del %file% ) if exist tmp_%file% ( del tmp_%file% ) set Header=TRUE for /f %%a in ('dir /b *.csv') do ( echo %%a if !Header!==TRUE ( set /p Header=<%%a echo !Header!>>"%file%" ) for /f "usebackq delims= skip=1" %%b in (%%a) do ( echo %%b>>"%file%" ) ) if not "%3" == "" ( ren %file% tmp_%file% if "%3" == "-outf8" ( rem shift-jis -> utf-8 if "%1" == "-isjis" ( powershell -nop -c "get-content tmp_%file% | Set-Content -Encoding UTF8 %file%" ) ) else if "%3" == "-osjis" ( rem utf-8 -> shift-jis if "%1" == "-iutf8" ( powershell -nop -c "get-content -Encoding UTF8 tmp_%file% | Set-Content %file%" ) ) del "tmp_%file%" ) :end echo Done. endlocal |
結合ツールについて
保存したbatファイルは、最低2つのパラメータの設定が必要になります。
第1パラメータは、結合するもとのcsvファイル群の文字コードを設定します。指定方法は、-isjisと-iutf8の2種類です。
第2パラメータは、csvファイル群を1つに結合するファイル名を設定します。
第3パラメータは、任意です。1つに結合するファイルの文字コードを設定します。結合元のファイルと1つに結合するファイルの文字コードが同じであれば設定は不要です。設定するパラメータは-osjisと-outf8の2種類です。
例.上のソースをコピーしfilemerge.batとして保存し、結合ファイルをall.csvとする場合、以下の4つのパターンが実行できます。
filemerge.bat -isjis all.csv ← SHIFT-JISのCSVファイル群を1つのall.csvにします
filemerge.bat -iutf8 all.csv ← UTF-8のCSVファイル群を1つのall.csvにします
filemerge.bat -isjis all.csv -outf8 ← SHIFT-JISのCSVファイル群をUTF-8に変換した1つのall.csvにします
filemerge.bat -iutf8 all.csv -osjis ← SHIFT-JISのCSVファイル群をSHIFT-JISに変換した1つのall.csvにします
結合ツールの使い方
- 上記のソースをコピーし、好きな名前で拡張子をbatにし、SHIFT-JISまたはUTF-8で保存します。
- 1.で保存したバッチファイルを、CSVファイル群に移動します。
- コマンドプロンプトを出します。
- バッチファイルを実行します。実行方法については、「結合ツールについて」を参照してください。