【Windows】複数のtxtやcsvファイルを一瞬で結合!ファイル名に日時表記もする方法(batファイル)

複数あるCSVファイルを1ファイルに結合したい!

Excelマクロなど組もうかと考えたこともありましたが、
そんなことするまでもなく、簡単に結合させることが可能です。

以下手順とコード例を紹介します。

複数あるCSVファイルを1ファイルに結合する方法

1.結合したいcsvファイル達を同じフォルダに入れる。
2.フォルダ内に以下方法で作成したbatファイルを同じフォルダに配置する。
3.BATファイルを実行する。

おおまかな流れはこんな感じです。ではbatファイルの実際のコードは以下になります。

batファイルを作成して実行

1.デスクトップでも任意のフォルダでもいいので、適当に右クリック→新規作成→テキストドキュメント。
ファイル名・拡張子も「結合.bat」みたいな感じに変える。

2.batファイルを右クリ→編集し以下コードを入力。

copy *.csv all.csv

赤い部分は結合後に作成したい任意のファイル名にします。

3.「結合.bat」を実行する。

最終行に謎のスペースや文字列が入る場合


もしかすると上記のコマンドでは、結合後のCSVに最終行に変なスペース(EOF)が入る場合があります。これを解消したい場合は以下のように/b(バイナリ)を足しましょう。

copy /b *.csv all.csv

上書き防止のためファイル名に日時も付けたい

何度も業務上でファイルを作成を行う場合は上書き防止のため、ファイル名に日時(秒付)が付くと便利かもしれません。
1行では済みませんが、以下のようなソースで可能です。

set y=%date:~0,4%
set m=%date:~5,2%
set d=%date:~8,2%
set h=%time:~0,2%
set min=%time:~3,2%
set s=%time:~6,2%
copy /b *.csv %y%%m%%d%%h%%min%%s%all.csv
ざっくり言うと・・・
「set y=」などは変数宣言。 「date」は日付取得。「~0,4%」は0文字目から4文字抜き出す(MID関数みたいな感じです)。これでyに「2018」の文字列が代入されます。
同じように「time」も時刻から文字を抜き出してます。
で最後に、copyで作成されるにファイル名を%y%とか変数をくっつけてます。

コメント