ファイルを結合しよう,その1 [type,リダイレクト]

妹「メモ帳で開きCTRL+A、CTRL+C」
兄「……」
妹「新しく開いてCTRL+V。次のファイルを開いてCTRL+A」
兄「ファイルを結合したいの……?そういう時はtypeを使うといいよ」
妹「typeってどういうコマンドなの?」
兄「テキスト ファイルまたはファイルの内容を表示するものだね。コマンドプロンプトでちょっと使ってみようか」

dirをファイルにリダイレクトで出力し、それをtypeで読み込んだ

兄「dirで出力した内容をリダイレクトでファイルに落としてそれをtypeで読み込んでみたよ」
妹「……うん、やってる事は解ったけど、これが何の役にたつのかが解らない」
兄「これ単体だとファイルの中身を見るだけだし使い道が難しいよね。これをリダイレクトと合わせるて使うと便利なんだよ」
妹「例えば……?」

兄「まず、type 01.txt >>02.txt  02.txtへ01.txtの内容を追記のリダイレクトで結合したよ」
妹「dirとtypeだけだとよく解らないね」
兄「じゃぁテキストファイルを開いてみるね」

兄「↑のように、追記ができるよ」
妹「これが何の役に立つの?」
兄「例えばcsvファイルだね。 順番も意識するような大量のcsvファイルを結合したいって時に使えるよ」
妹「他に結合はできないの?」
兄「Copyのオプションでもできるけど、そっちはまた今度ね」
妹「フム……」

兄「こういうのを全部、20.csv,19.csv,18.csvと順番に結合していく時は、『tree /f | Clip』しておいて、エクセルか何かに張って一気に結合すると速いよ」
妹「なんでエクセル?」
兄「加工しやすくてバッチでループを組むよりも簡単に作れて、コマプロ上で右クリックするだけで実行してくれるから、こういうコマンド加工には相性がいいんだよね」

妹「なんだか泥くさいやり方だね。A6:C25をコピーしてコマンドプロンプトに張り付けるんだ」
兄「でもこういうのが楽だよ。たまに15.csvと12.csvの順番を逆にして結合したい、とか細かい時にはバッチのループ文だと修正が必要だしね。こういう形でバッチファイルを作っておけば後の修正が便利だよ」
妹「ふーん。でも大量ファイルになった時はこれよりループの方が便利なんじゃないの?」
兄「手動で誰でもできるって所に意味があるんだよね」
妹「どんな意味が……?」
兄「バッチにしたファイルの頭に『 上から順番に結合しています 』と1文書いて、こういうのを渡しておくと、誰かが『 10.csvと11.csvの結合を逆にしたい! 』って思った時に、自分で勝手にやってくれる
妹「ループでも勝手に直すんじゃないの?」
兄「ループを使うと『ちょっと、youwakaくん。11.csvと10.csvの結合順逆にしてくれるかね?』と振られる事になる」
妹「そんな事あるんだ?」
兄「短いけどプログラムっぽいバッチと、簡単に直せそうな長いバッチ。人に渡すなら簡単に直せそうな長いバッチの方が楽だよ。直してくれないか?って言ってきたら、「10と11の行を入れ替えてもらえますか?メモ帳ですぐなんで!」というだけで終わるし」
妹「……」
兄「あとコマンドプロンプトのtypeだと、バイナリファイルは全部表示されないからコピーされていないように見えるけど、実際はバイナリ単位でコピーされているから、Cのバイナリや、特殊文字を含むxmlファイルなんかにも普通にtypeで結合できるよ。便利だね!」
妹「今いち便利さが伝わらない……ような?」