2つのファイル内容を自在に結合しよう
後に付けたり、前に付けたり、間に入れたり
2つ、もしくは複数のファイル内容を自動で結合させる方法を紹介します。結合させると言っても、元となるファイルの前に追加するのか、もしくは最後に追加するのか、はたまた文章の途中に挿入するのか…と色々な結合の種類が存在します。
ここでは、その3つすべてに対応可能な自動結合方法を紹介しましょう。
・ファイル内容の自動操作に興味がある人
・同じような内容のファイルを大量に作成したい人
【ここでは、こんな自動化ができる!を動画で説明】
自由自在なファイル結合を体験しよう
詳しい説明は後に回して、自由自在にファイルを結合する手順を紹介します。
まず、作業フォルダを決めましょう。適当にどこかのフォルダ内で結構です。私は下の画像で示すフォルダで作業することにします。
この中に、結合テストに使用するファイルを作ります。まずは元となるファイルを「親と孫.txt」という名前で作りましょう。このファイルの中身は下の文章をコピー&ペーストしてください。
1 2 3 4 5 |
【親】 親(おや、parent)とは、子を持つ者のことである。父と母の汎称である。 【孫】 “孫”(まご)は、自分の子供の子供である。 |
続いて、「子.txt」というファイルを作成し、下の文章を入力します。
1 2 3 |
【子】 本人の直系卑属、すなわち実子もしくは養子のこと。 主に息子のこと。娘は、子の他に女(おんな)と呼び分けられることもある。 |
2つのファイルを保存して閉じたら、いよいよ結合プログラムの作成です。
ここでは、Windowsコマンドプロンプトのバッチファイルというものを使ってプログラムを作ります。以下のコードを「2つのファイルを結合.bat」というファイルを作って書き込んでください。※ファイル名を変更した後はダブルクリックでは開けません、右クリックから編集を選んでください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@echo off set /p source="元のファイル名を入力してください:" set /p sub="挿入するファイル名を入力してください:" set /p create="結合後のファイル名を入力してください:" if exist %create% del %create% for /f "delims=" %%a in (%source%) do ( if "%%a"=="[挿入]" ( for /f "delims=" %%b in (%sub%) do ( echo %%b >> %create% ) ) else ( echo %%a >> %create% ) ) |
書き込んだ後は、保存して閉じます。
このファイルをダブルクリックしましょう。すると、コマンドプロンプト画面と呼ばれる黒い画面が立ち上がります。ここに、
・挿入するファイル名
・結合後のファイル名
を入力します。以下の画像ように入力してください。
最後にエンターを押すと、新たに「親と子と孫.txt」というファイルが作られたでしょう。しかし、その中を見てもファイルは結合されていません。
これは、これらのファイル名を入力する前に、元となるファイル名のどの位置に挿入するファイル内容を挿入するのかを決める必要があるからです。
では、まずは「親と孫.txt」のファイル内容の先頭に「子.txt」を挿入してみましょう。それには、挿入したい場所に「[挿入]」という文字を書き加えます。つまり先頭に挿入したい場合、「親と孫.txt」を下の画像のように書き換えます。
すると、「[挿入]」と記述した位置に「子.txt」ファイルの内容が挿入されました。
次に、「親」と「孫」の間に「子」を挿入したい場合を考えます。その場合、元ファイルの「親と孫.txt」は次の画像のようになります。
「2つのファイルを結合.bat」をダブルクリックして実行してみましょう。すると、きちんと間に挿入されたことが分かります。
最後に、最後尾挿入する場合ですが、これはもう改めて説明する必要もないでしょう。
「2つのファイルを結合.bat」のプログラムコードを簡単に説明
「2つのファイルを結合.bat」では何をしているのか簡単に説明しておきましょう。このファイルはWindowsコマンドプロンプトのバッチファイルと呼ばれるものであり、Windowsのデフォルト状態で使用できる自動化には欠かせないプログラムです
「2つのファイルを結合.bat」の内容を以下にもう一度示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@echo off set /p source="元のファイル名を入力してください:" set /p sub="挿入するファイル名を入力してください:" set /p create="結合後のファイル名を入力してください:" if exist %create% del %create% for /f "delims=" %%a in (%source%) do ( if "%%a"=="[挿入]" ( for /f "delims=" %%b in (%sub%) do ( echo %%b >> %create% ) ) else ( echo %%a >> %create% ) ) |
3~5行目の「set」から始まるコマンドは、「=」の右側の文字をコマンドプロンプト画面に表示して、ユーザーにファイル名の情報を求めるためのものです。
7行目では、結合後のファイル名に指定したファイルと同名のファイルが存在したときに、そのファイルを削除します。
そして、9行目の「for」は( )で囲まれた中のコマンドを繰り返し実行するという繰り返し文です。ここで、( )は9行目から最終行までとなっています。何に対して繰り返しているかというと、元のファイルの内容を1行ずつ読み込み、ファイルの内容が終わるまで繰り返し続けます。読むと同時に結合後のファイルに書き込みも行っています。
このようにファイルの内容を繰り返し読み続けますが、11行目の「if」では、「[挿入]」という文字が現れたら、挿入するファイルを読み込み、それを代わりに結合後のファイルに書き込みます。
これがこのプログラムのコードの大まかな流れです。もっと詳しく知りたい方は、「Windowsバッチファイル」や「Windowsコマンドプロンプト」などのキーワードで調べてみてください。
おわりに
ファイルの結合作業は、1つや2つであれば手作業で行った方が簡単かもしれません。しかし、大量のファイルや毎日継続して行う必要があるとき、このような自動化が役に立ちます。
ここで紹介したプログラムを改良すれば、一気に大量のファイルを扱えるようになったり、ある決まった時間に定期的に全自動で処理を行うことができるようになります。
自動化プログラムの作成を依頼しませんか?
幣サイトでは、Windowsパソコンの自動化プログラムの作成サービスを行っています。
本サービスの特徴は、
・安価な値段
・個人から法人までどなたでも対応
・お客様の要望を全力で実現
です。
安いからといって、決して手は抜きません。
まずは、下のボタンからWindowsパソコンの自動化プログラムの作成サービスの詳細をご確認ください。