不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

DOSコマンドでCSVファイルをマージする

よくCSVファイルへ書き出してダウンロードできる機能がいろいろなサイトに最近あります。
ダウンロード結果は日付毎だったりで1ファイルにしたいのに!って思ったのでマージ方法を記載します。
Javascriptでやろうかと思ったのですが、DOSの方が簡単だったのでDOSにしました。
Macの場合は、catコマンドなどで代用できそうですね

・実行環境:Windows 10 Home 64bit

DOSコマンドでマージする】
■手順1 ファイル構成を整える
 必要なファイルを1つのディレクトリにまとめる。

■手順2 拡張子を整える
 txtとcsvは形式が異なるのでそもそもマージしたいと思うことないと思いますが…
 拡張子を整えます。

■手順3 typeコマンドを実行する
 DOSには標準出力するtypeコマンドというものがありました。
 下記のように結合したいファイルを標準出力し、結果をファイルに書き込みます。

type *.csv > 出力したいファイル名.csv

 これでファイルがマージできました。
 ただ、1行目にヘッダーがある場合、すべてのファイルのヘッダーが入ってしまうので注意が必要です。

 参考:Type - DOS コマンド一覧 - Programming Field

■手順3 copyコマンドを実行する
 ファイルコピーをするcopyコマンドがあったので、この場合は下記となります。

copy *.csv 出力したいファイル名.csv

 typeコマンドの時と同様にヘッダーが入ってしまうので注意が必要です。
 また、私の環境だとなぜかExcel2010で出力ファイルを開いた場合に末尾の行に「・」が入っていました。
 秀丸などでは存在しないのですが、念のため気を付けていただいた方がいいかもしれません。

 参考:Copy - DOS コマンド一覧 - Programming Field

■その他
出力するファイル名が固定の場合はバッチファイル化した方が使い勝手がよいので、
手順3のファイルをバッチファイル化してしまいます。
バッチファイル(marge.bat)をマージしたいファイルが入ったフォルダにコピーして、ダブルクリックするだけでマージしたファイル(marge.csv)が同じフォルダに出力されます。

この記事のサンプルは下記Githubにアップロードしました。
github.com



以上。