バッチファイルを作ってみよう

バッチ処理がどういうものがというと、一定の基準で蓄積したデータを一括処理する方法です。

バッチに登録した一連のプログラムや、ファイル転送のためのコマンドを順番に実行し処理します。

実際にバッチ処理は、企業の業務を円滑に運用するために多くの場面で活用されています。

実際にどのようなものなのか、見ていきましょう。

1.そもそもバッチファイルとは

バッチ処理を実行するときは、バッチファイルを作成・実行という手順を行います。

バッチファイルは、バッチで使う命令文を記載したテキストファイルのことで、『cmd』または『bat』の拡張子を使用します。

ここで記載された複数のコマンドを1ファイルに合わせて記載し、あらかじめ決まった条件で実行というのが流れです。

実行方法は『コマンドプロンプト』もしくは『エクスプローラー』の方法があります。

その他の処理との違い

バッチ処理以外にも、コンピューターで使う処理方式にはさまざまな種類があります。

その他の処理との違いについて見ていきましょう。

①リアルタイム処理

バッチ処理の対極で、『即座にデータ処理を実行する』処理方式のことです。

よく見られるレジや、ATM処理などで、大量のデータを扱うことには向いていません。

場合によっては、リアルタイム処理とバッチ処理を組み合わせ、処理を行うシステムも多くあります。

②シェルスクリプト

シェルとは、コンピューターに命令をするとき、それを仲介するプログラムです。

シェルを介したコンピューターへのコマンドを集めたもので、バッチとの相違点は、バッチがWindowsのファイルであることに対し、シェルスクリプトはUNIX系のプログラムということになります。

2.実際に作ってみよう

基本の作り方

まず、対象のデータと、どんな処理を行うのかといった概要を決めておく必要があります。

また、都度起動する『随時バッチ』として使うのか、一定間隔ごとに起動する『常駐バッチ』として使うのかも重要です。

さらにセキュリティや制御の観点からも検討を行いましょう。

テキストとして作成し、特定のディレクトリにあるファイルのバックアップを行うという一連の作業を考えてみます。

例えば c:¥test へ移動してから、サブディレクトリの back ディレクトリの中のファイルを削除したあと、カレントディレクトリにあるファイルをすべて back ディレクトリへコピーする、といった場合は


cd c:¥test
del /q back
copy *.* c:¥test¥back

また、定期的に同じ作業を行うような時にもバッチファイルを使用すると便利です。

バッチファイルを作成する際は、メモ帳などテキストエディタを起動し、実行したいコマンドを順に記述してから、テキストファイルを拡張子を .bat で保存します。

「バッチファイル名.bat」

また、タスクスケジューラを使って、設定された時間に定期的にバッチ処理を実行することも可能です。

タスクスケジューラの画面を開き、まずは『トリガー』(タスクを開始する条件・きっかけのこと)を毎日ごとや、PC立ち上げ時などの中から任意のものを指定します。

次に『操作』のタグから『プログラムの開始』を選択し、対象プログラムに作成したバッチを設定しておくと、バッチ処理が実行されるようになります。

3.バッチファイルの実行

バッチファイルを実行する

バッチファイルを実行するときは、バッチファイルがあるディレクトリで バッチファイルを実行します。

先程作成したバッチファイルの実行は、 backup.bat または backup で実行します。

「backup」

「backup.bat」

バッチファイルはこのようにいくつかのコマンドの実行を繰り返し行いたい場合に便利です。

場合によっては、繰り返し処理や条件分岐を記述してより複雑な処理を行わせることもできます。

4.エラーの重要性

バッチ処理の問題点を見直す際は、データの保管場所、ネット環境、バッチスクリプトのスリム化など、見直すべきところがいくつもあります。

データベースに蓄積されるデータは時間とともに増えていきます。

また、OSのバージョンとの互換性によってエラーが発生することもあります。

総合的な要因から問題点を検証していくことが重要です。

エラーが発生した場合には、どのコマンド実行の中で、エラー発生したかを究明する必要があり、ログが残っていれば、そこから原因を絞り込むことができるため、早く対応できるようになります。

またログのなかでも、OSが吐き出したログなのか、バッチが吐き出したものなのかなど、一つの処理でも対応が変わってきます。

ログの出所を特定できるように、バッチの実行単位で生成できるような仕組みを作る必要があります。

突き抜け発生時の対策を

バッチ処理が予定の時間に終わらないことを『突き抜け』と言い、重大なトラブルのや障害の原因となることが考えられます。

夜間バッチであれば、日中に実行した場合、通常の業務に支障をきたしてしまうような処理を、夜間の誰もいない期間に、なるべく迷惑がかからないタイミングで行うことに意義があるものです。

しかし、突き抜けが発生し、翌日の開店時間までに終わらないとなると、昼間の業務実行に障害が発生します。

実際に日本でも、とある金融機関が突き抜けによって翌日の業務に支障をきたし、ATMなどが利用できなくなるといった問題が発生したことがあります。

突き抜けを防止するには、普段からの対策が重要になります。

データベースに蓄積されるデータは放置しておけばどんどん大きくなるため、データ量をみて環境に合わせスケールアップを図る等、バッチ処理を高速化の実現をめざしましょう。

バッチ処理やデータベースの管理を一人の担当者に任せないという、ブラックボックス化しないよう防止策を講じることも重要です。

まとめ

バッチ処理は大量のデータ処理を一括で行うプログラミング方式です。

蓄積するデータが大きくなりすぎるとデータ処理が想定内の時間に終わらなくなり、突き抜けなどのトラブルの原因になります。

そういった要因を防止するためにも、日頃から対策をしっかり練っておくことが重要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です