バッチファイルはどう作ればいい?書き方やできること・出来ないことまとめ
現在、企業で取り扱うデータ量は日に日に増しています。
これからのマーケティング戦略、業務改善、そしてDXなど、データの活用次第で企業には多様なビジネスチャンスがあります。
しかし、大規模データを取り扱う中で、データの管理方法に頭を悩ませてはいないでしょうか。
大規模データを有効活用するためには、日々のデータを管理するところから始まります。
データを正しく活用できないと、せっかくの大規模データが宝の持ち腐れになるだけでなく、ビジネスチャンスを逃し、企業として衰退の道を辿りかねません。
ではどうすればいいのでしょうか。
データを管理運用する上で欠かせない方法として、バッチ処理があります。
バッチ処理をうまく利用することで、大規模データの処理を効率化することが期待できます。
バッチ処理についての詳細は、過去の記事で解説しています。
バッチ処理とは!?バッチファイルとは別物?リアルタイム処理との違いやメリットまとめ
そこで、今回の記事ではバッチ処理をする際に使用するバッチファイルについて取り上げ、バッチファイルの作成方法や、バッチファイルを使ってできることついて解説をします。
バッチファイルについて
まず始めに、バッチファイルについて説明をします。
バッチファイルとは、Windowsで利用できるコマンドプロンプトを活用した、拡張子が『bat』となっているテキストファイルのことをいいます。
バッチファイルにコマンドを記述することで、そのファイルに記述した内容に基づいてバッチ処理を実行してくれます。
一度バッチファイルを作りさえすれば、データの処理を完全自動化でおこなうことが可能です。
通常、作成や編集にはメモ帳を使い、Windows環境であれば、実行するための環境を用意する必要がありません。
そのため、開発自体は非常に簡単にスタートすることが出来ます。
注意点として、変更する際には、アイコンをダブルクリックするのではなく、
「右クリック→編集」
で開く必要があります。
(ダブルクリックすると、即座に実行されてしまいます。)
バッチファイルの作成方法
バッチファイルの概要について説明したところで、次はバッチファイルを作成するための手順や、知っておくべきコードの一例を紹介します。
バッチファイルを作成するためにはテキストエディタを使います。
そのために、最初に拡張子を表示させる必要があります。
最近のWindowsでは
1.フォルダを開く
2.画面上部の「表示」をクリック
3.「ファイル名拡張子の表示」にチェックを入れる
上記で、ファイルの後に「.」に続くそれぞれのファイル拡張子が表示されているはずです。
(OSのバージョンによって上記の場所が多少変わる可能性があります)
次に、実際にファイルを作りますが、デスクトップ画面上で
「右クリック→新規作成→テキストドキュメント」
でファイルを作ります。
名称を「test.bat」に変えることで、バッチファイルが作成可能です。
(その際、確認画面が出ますが、OKで大丈夫です)
これがバッチファイル作成における最初の準備になります。
次に記述するコードの内容について説明します。
まず一番始めに、『@echo off』と記述をします。
このコードは『以下に記述されるコマンドを画面に表示しない』という意味をあらわします。
この記述を省いてしまうと、処理を実行するたびにコマンドが画面表示されることになります。
処理の内容を都度確認する必要がない場合は、バッチファイル作成時には『@echo off』のコマンドを入力しておくといいです。
次に、『set local』と記述します。
このコードは環境変数を記述する際に使用するものです。
環境変数とは、OSが設定値などを永続的に保存し、実行されるプログラムから設定や参照ができる変数です。
『set local』と記述をすることで、バッチファイルで環境変数の内容を変更しても、バッチ処理の終了後には元の値に自動で戻るという仕様にすることができます。
環境変数の値をバッチ処理時以外は変更したくない場合や、他のファイルに影響を与えたくない場合などは記述必須のコマンドとなります。
次の記述コードは『rem』です。
『rem』と記述をすることで、その後ろのコマンドを処理の実行とは関係のないコメントとしてあつかうことができます。
VBAでいうところの先頭にシングルクォーテーションを付けることであったり、HTMLでの『<!– –>』のような役割を果たしてくれます。
記述したコマンドが何を意味しているのか解読できるよう、メモ書きとして残しておくなどといった際に役立ちます。
作成者自身だけでなく、業務引継ぎ時などで別担当者が運用する際にも活用することで、保守面での利便性向上や可読性の向上が期待できます。
上記コードに加え、実際に処理をおこなうためのコマンド入力を終えたら、ファイルの実行をします。
作成したバッチファイルは、コマンドプロンプトからファイル名を指定する、もしくはアイコンをダブルクリックで実行されます。
以上がバッチファイルの作成手順、およびコードの一例についての紹介になります。
バッチファイルでできること
バッチファイルの作り方を解説したところで、バッチファイルで何ができるのかについて解説をしていきます。
下記以外にも多くの処理が可能ですが、今回は最も基本的な処理について説明します。
プログラムやソフトの起動
バッチファイルでできることの1つ目は、インストールされているプログラムやソフトの起動です。
コマンドの入力手順は、起動したいソフト名の後ろに『.exe』と記載します。
例えば、メモ帳を起動したい場合のコマンドは、『notepad.exe』、Excelを起動したい場合は『excel.exe』となります。
ソフトの起動をおこなうコマンドに加え、起動後にデータ処理をおこなうコマンドなどをあわせて記述しておくことで、一連の処理を一括で済ませることができます。
フォルダの作成と編集
バッチファイルでできることの2つ目はフォルダの作成、および編集です。
フォルダを作成する際のコマンド入力手順は、『mkdir folder』と記載します。
例えば部署や組織ごとに利用するフォルダを作成しなければならない時、数十個から数百個ものフォルダを作らなければなりません。
そのような場合に、まとめてフォルダを作成するバッチ処理を実行できれば、業務の大幅な効率化を図ることができます。
また、作成したフォルダの名称を個々に設定できるコマンドなどもありますので、それらを組み合わせることで編集処理もまとめておこなうことが可能です。
ファイルの作成と編集
バッチファイルでできることの3つ目はファイルの作成、および編集です。
ファイルを作成する際のコマンド入力手順は、『copy【コピー元のファイル名】【コピー先のファイル名】』と記載します。
先に述べたフォルダの作成と同様、複数のファイルをまとめて作成することができる便利なコマンドです。
ファイル内容の比較
バッチファイルでできることの4つ目はファイル内容の比較です。
コマンドの入力手順は、『fc 【比較したいファイル1】【比較したいファイル2】』と記載します。
例えば類似した大規模データを比較検証したい場合、人の力だけで確認していては時間がかかるどころか、漏れや間違いが発生しかねません。
バッチ処理で類似ファイルの相違点を見つけ出すことができれば、時間を有効活用できるだけでなく、ヒューマンエラーの発生防止にも役立てることができます。
バックアップシステムの作成
バッチファイルでできることの5つ目はバックアップシステムの作成です。
コマンドの入力手順は、『xcopy 【コピー元】【コピー先】』と記載します。
業務で使用するデータを万が一にも紛失してしまった場合、企業にとっては多大な損失になるだけでなく、社会的責任を負う恐れがあります。
そのため、バックアップは定期的におこなうことが求められます。
しかしながらバックアップを手動でおこなうことは手間と時間がかかるため、自動でおこなうことが推奨されます。
バッチ処理でバックアップを実行する体制を築くことができれば、データ保持の観点、業務負荷の観点双方にとってメリットがあります。
また、バッチ処理でバックアップをおこなうという作業をタスクスケジューラを使って登録することで、バックアップを完全自動化してしまうことも可能です。
SQLの実行も可能
ここまでは、基本的なファイル操作を見てきましたが、実はSQLの実行なども可能です。
バッチファイルでは、コマンドプロンプトで実行する様なコマンドを、そのまま実行することが出来ます。
OracleやSQLServerなどの実行も、コマンドプロンプトから行うことが出来るため、同様にバッチファイルでも実行可能です。
バッチファイルでできないこと
バッチファイルを使ってできることは上述した通りとなります。
その一方で、バッチファイルでできないことや苦手とする処理も存在しますので、それらについて解説をしていきます。
バッチファイルを使ってできないことは画面操作があげられます。
バッチ処理はコマンドで操作することを得意としているものです。
そのため、マウスを使って画像を動かしたりする操作などを処理に加えることはできません。
加えて、苦手なことに、イレギュラーな対応ができないということです。
一般的なプログラミングにある「try catch」がバッチファイルにはありません。
そのため、
「もしもエラーになったときには、〇〇をする・・・」
という記述が出来ないのです。
例えば、バッチファイルで記述した処理内容を実行するにあたって、処理をする上で本来意図していないデータが含まれていたとします。
そのような場合はエラーとなってしまい、その時点でバッチ処理が止まってしまいます。
バッチ処理は業務時間外におこなわれるケースが多いため、翌朝になりシステムが正常稼働しないなどといったトラブルが生じかねません。
バッチ処理が正常に動作するのか、本番稼働をする前にはエラーにならないような工夫や運用テストが必要になります。
また、バッチファイルは決められた処理を記述するものです。
そのため、ルーティンワークを自動化することは得意としていますが、都度判断が求められるような業務には不向きです。
バッチファイルを作成する上で、その処理は定型業務なのか、非定型業務なのかを人の手によって振り分ける必要があるでしょう。
もし仮に非定型業務であったとしても、仕組み化をして定型業務化することができれば、バッチ処理に組み込むことが可能となります。
バッチ処理化することができる業務か否かを判断し、切り分けることが求められます。
業務システム化はAMELAに
今回は、バッチファイルについて見てきました。
様々な業務の効率化が期待できるバッチファイルですが、本文中で述べたように「try catch」が使えないなど、限定的な処理が基本になります。
ただし、コマンドで行えることが可能なバッチファイルは、
「各種プログラミング言語で作った処理を、バッチファイルを通して自動実行する」
ということは出来ます。
例えばpythonで作成したプログラムを、バッチファイルから実行できます。
こうすることで、python内で「try catch」を行えるため、工夫次第で多様な効率化が可能でしょう。
AMELAでは、日々多くの開発を通して、様々な企業の業務改革を行っています。
新しいシステムの開発もそうですが、既存システムの改修など、是非幅広くご相談いただければと思います。