bat[002]複数のCSVファイルをマージ&ソートするバッチファイル
<スクリプトの流れ>
- 全てのCSVファイルの2行目以降(more +1)の空白行以外(findstr ".")をマージし、 一時ファイル(temp.txt)に出力
- CSVファイルの一つからヘッダ(タイトル)行のみ取り出して all.csv に出力
- タイトル行が1024バイトを超えている場合に備えて、変数サイズに1024バイト制限のあるSETコマンドは使わず、echoコマンドからファイルに直接出力する
- ファイル名に空白スペースが含まれている場合に備えて、[usebackq]オプションでファイルセットのファイル名(%%a)を二重引用符で囲めるようにする
- タイトル行に空白スペースが含まれている場合に備えて、[delims]オプションで空白スペースを区切り文字にしない
- 一時ファイル(temp.txt)の中身を降順にソート(sort /r)して all.csv に追記
- 一時ファイル(temp.txt)を削除する
※ CSVファイルと同じフォルダに入れて実行する
<CSV_Marge_Sort.bat>
@echo off set temp_file=temp.txt set marge_file=all.csv REM 1. for %%a in (*.csv) do ( type "%%a" | more +1 | findstr "." >> %temp_file% ) REM 2. for %%a in (*.csv) do ( for /f "usebackq delims=" %%b in ("%%a") do ( echo %%b> %marge_file% goto :label ) ) :label REM 3. sort /r < %temp_file% >> %marge_file% REM 4. del /q %temp_file%