7. バッチ処理関係 

   7−1  バッチファイル
   7−2  バッチファイルのためのコマンド
   7−3  条件分岐の構文

<前章までの状態>
  D:ドライブに test ディレクトリがあります。
  D:\test ディレクトリの中
    ディレクトリ renshu
    テキストファイル test.txt, test2.txt
  D:\test\renshu ディレクトリの中
    テキストファイル test3.txt
 D:\test
  ├ renshu
  | └ test3.txt
  ├ test.txt
  └ test2.txt

7−1  バッチファイル

コマンドプロンプトに与えるコマンドをテキストファイルにまとめて記述したものを バッチファイルといいます。
「メモ帳」(またはお使いのエディタ)を起動して、下の文字列を記述したテキスト ファイルを作成し、 test.bat というファイル名で D:\ (「ローカルディスク(D:)」 を開いてすぐの所)に保存して下さい。
無題−メモ帳
ファイル(F) 編集(E) 書式(O) ヘルプ(H)
 cd d:\test
 dir /b


ウィンドウを開いて保存されたファイルを確認すると、アイコンが
   
のようになっているはずです。

拡張子 .bat がついたテキストファイルすなわちバッチファイルは、プロンプトに 対して拡張子を除いたファイル名を入力して すると、その内容 をコマンドとしてプロンプトに次々と与え、順番に実行してゆきます。

 C:\>type d:\test.bat
 cd d:\test     ← test.bat の中身を画面表示しました
 dir /b

 C:\>D:       ← カレントドライブ変更

 D:\>test     ← バッチファイル実行

 D:\>cd d:\test     ↓ 以下は自動的に実行されます

 D:\test>dir /b
 renshu
 test.txt
 test2.txt

 D:\test>


長いコマンドを短い名前のバッチファイルに記述しておき、入力ミスを防いだり 手間を減らしたり、という使い方もできます。D:\test に下記の内容の xl.bat を作り、実行してみましょう。( Excelのインストール先は、マシンごとに異なります。 お使いのマシンごとに確認して内容を書き換えてください)
無題−メモ帳
ファイル(F) 編集(E) 書式(O) ヘルプ(H)
"C:\Program files\Microsoft Office\Office\excel"



 D:\test>type xl.bat    ← xl.batの中身を見ます
 "C:\Program Files\Microsoft Office\Office\excel"

 D:\test>xl             ← xl.bat を実行

 D:\test>"C:\Program Files\Microsoft Office\Office\excel"
                ← 今、Excelは起動中です
 D:\test>      ← Excelを閉じたので制御が戻ってきました


バッチファイルは、外部コマンドに似たふるまいをする、実行形式ファイルの一種 と考えてもいいでしょう。


7−2  バッチファイルのためのコマンド

すぐに使えそうなものをいくつか紹介します。

@ECHO OFF
バッチファイルに記述されたコマンドを、いちいち画面に表示しません。
バッチファイル test.bat の最初に @ECHO OFF を書き加え、もう一度 実行してみましょう。
test.bat−メモ帳
ファイル(F) 編集(E) 書式(O) ヘルプ(H)
 @echo off   ← この1行を加えました
 cd d:\test
 dir /b


 D:\test>cd ..        ← カレントディレクトリをルートに戻す

 D:\>type test.bat    ← 中身を確認
 @echo off
 cd d:\test
 dir /b

 D:\>test             ← バッチファイル実行
 renshu
 test.txt      ← DIRコマンドの実行結果のみ画面表示されました
 test2.txt      (DIRコマンド自体は画面表示されない)

 D:\test>


PAUSE
処理を一時中断し、ユーザーが画面をよく読んだりするのを助けます。
バッチファイルは、ウィンドウを開いてアイコンをダブルクリックしても実行できます。 ところがWindows2000/XPでは、D:\ のウィンドウを開いて test.bat のアイコンをダブルクリックすると、 一瞬黒い窓が現われたかと思うとすぐに閉じてしまい、表示結果を読むどころではありません。
(Windows9x 系では動作完了後のウィンドウが表示されたまま残ります。)
「メモ帳」などのエディタを使い、test.bat を開いて最後に PAUSE を書き加えて保存します。その後もう一度ダブルクリックをして実行してみましょう。
test.bat−メモ帳
ファイル(F) 編集(E) 書式(O) ヘルプ(H)
 @echo off
 cd d:\test
 dir /b
 pause      ( ← この1行を加えました )


 renshu
 test.txt
 test2.txt
 続行するには何かキーを押してください . . . 

DOS窓のウィンドウが開いて、上記が表示された所で中断します。
この場合は、何かキーを押すと、次の瞬間にウィンドウが閉じます。

%1 〜 %9
バッチファイルに引数を持たせることができます。ひとつのバッチファイルでも、 オプションを指定し分けて複数の働きを持たせることができます。
バッチファイル xl.batof.bat にリネームし、下記のように編集してから 引数を与えて実行してみましょう。
of.bat−メモ帳
ファイル(F) 編集(E) 書式(O) ヘルプ(H)
 @echo off
 "C:\Program files\Microsoft Office\Office\%1"



 D:\test>ren xl.bat of.bat   ← リネーム

 D:\test>notepad of.bat      ← メモ帳を起動し、編集

 D:\test>type of.bat         ← 内容を確認
 @echo off
 "C:\Program files\Microsoft Office\Office\%1"

 D:\test>of excel            ←引数に excel を与えて実行
              ← Excel起動中。Excelを閉じるとプロンプト再表示。
 D:\test>of winword          ←引数に winword を与えて実行
              ← Word 起動中。Wordを閉じるとプロンプト再表示。
 D:\test>



7−3  条件分岐の構文

バッチファイルを便利にするためのコマンドはほかにもたくさんありますが、 ここでは、条件によって処理を変えるためのコマンドを挙げておきます。
それぞれのコマンドの説明を詳細に知りたい場合は、HELP コマンド名 を 実行するか、各コマンドに /? オプションを与えて実行して下さい。
ECHO 文字列 〜 文字列を表示(出力)する。
GOTO ラベル名 〜 ラベルへジャンプする。
:ラベル名 〜 ジャンプ先を示すラベル。
CHOICE 〜 ユーザーによる選択を取得する。(Win9x系のみ)
IF ERRORLEVEL=値 コマンド 〜 CHOICEの結果次第でコマンドを実行。
IF EXIST ファイル名 コマンド 〜 ファイルが存在するとコマンドを実行。
FOR %変数 (セット) DO コマンド〜 コマンドを繰り返し実行。
CALL バッチファイル名 〜 バッチの中でバッチファイルを起動

もしファイルが存在していたら何らかの処理をし、存在していなからったメッセージを出して 処理を終えるバッチファイルを作ります。
test.bat を下のように書き換えて、DOS窓上で実行しましょう。
test.bat−メモ帳
ファイル(F) 編集(E) 書式(O) ヘルプ(H)
 @echo off
 d:
 cd d:\test
 dir /b
 pause

 if exist renshu\test3.txt goto idou
 echo test3.txtはもうrenshuにありません。
 goto owari

 :idou
 echo test3.txtを上のディレクトリへ移動します。
 move renshu\test3.txt .

 :owari
 cd d:\



 C:\>test     ← バッチファイル実行

 D:\>
 of.bat
 renshu               ← test3.txtは \renshu の中にあります
 test.txt
 test2.txt
 続行するには何かキーを押してください...    ← 何か押します
 test3.txtを上のディレクトリへ移動します。  ← 移動を実行

 D:\>c:\test  ← もう一度実行
 of.bat
 renshu
 test.txt
 test2.txt
 test3.txt           ← text3.txt は d:\test に来ています
 続行するには何かキーを押してください...  ← 何か押します
 test3.txtはもうrenshuにありません。      ← \renshu には既になし

 D:\>