lMS-DOS バッチファイル '96.11. 5  
l.お知らせ 内容 LINK FILE   HTML Win PC Unix MS-DOS C C++ Mfc Java 
.MS-DOS_  バッチファイル    例    未使用   コマンド 


バッチファイルは MS-DOS のコマンドをキーボードから入力して実行する代わりに、テキストファイルに MS-DOS コマンドをまとめて記述したものです。
コマンドがファイルにまとめられたもの(Batch)だから、バッチファイルといいます。

MS-DOS コマンドをまとめて記述したテキストファイルは、普通のテキストファイルと区別するために、ABC.bat のように拡張子を BAT にします。

拡張子が BAT のファイルは、文書ファイルとしてではなく、MS-DOS コマンドがまとめて記述されたプログラムファイルとして扱われます

コマンドの説明を表示するには MS-DOS ウインドウで HELP と入力します。
HELP の先頭ページには、HELP を終了して MS-DOS ウインドウに戻る方法や、各コマンドの説明を表示させる方法が書いてあります。

バッチファイルの例

TEST.bat
DIR /W
DIR > TEST.txt
C:\WINDOWS\NOTEPAD.exe TEST.txt
DEL TEST.txt
EXIT
ディレクトリの内容を一覧表示します。
ディレクトリの内容を、TEST.txt に書込みます。
ノートパッドを起動して、TEST.txt を表示します。
TEST.txt を削除します。
MS-DOS を終了します。

DIR /W/W は、DIR コマンドでディレクトリの内容を表示するときに、作成日時などを表示しないようにするオプションスイッチです。

DIR >> は、DIR コマンドでディレクトリの内容を表示するときに、MS-DOS ウインドウに表示するのではなく、指定されたファイルに書き込むためのリダイレクト記号です。

C:\WINDOWS\NOTEPAD.exe のようにプログラム名を記述すると、コマンドと同様に、そのプログラムが実行されます。
この場合は、notepad に test.txt を開くように指定しています。
test.txt のように、プログラムまたはコマンドと同じ行(コマンドライン)に書かれた、そのプログラムまたはコマンドに与えるデータを、コマンドラインといいます。

EXIT は MS-DOS を終了するコマンドです。
このバッチファイルが終了しても MS-DOS ウインドウを使って作業をしたいときは、必要ありません。その作業が終ってから、EXIT と入力して MS-DOS を終了します。

このようなバッチファイルを作ると、TEST.batへのショートカットというファイルも勝手に作られます。
起動するときは TEST.bat かショートカットのどちらかをダブルクリックします。
TEST.batへのショートカットは、TEST.bat の起動方法を決めるためのファイルです。
ショートカットのプロパティで、実行時の大きさを最小化の状態にし、プログラム終了時にウインドウを閉じるをチェックしておけば、上記のバッチファイルは全く MS-DOS ウインドウを表示することなく、notepad により test.txt が表示されます。

なお、上記の例では test.txt を表示した後削除していますので、test.txt はなくなりますが、表示はされています。


バッチファイルでよく使われるコマンドなど

リダイレクト > >> 出力の変更

コマンドまたはプログラムの出力を、画面ではなくファイルに書込みます。
ECHO AB > SAMPL.txt
ECHO CD >> SAMPL.txt 
 AB を画面ではなく SAMPL.txt に書込みます。
 CD を SAMPL.txt に追加書込みします。

CM_FIL.exe > COML.bat
CM_FIL.exe >> COML.bat
 バッチファイル COML.bat に上書きします。
 バッチファイル COML.bat に追加書込みします。
  ファイルの指定がないので CM_FIL は画面に表示しようとするが、
  リダイレクトにより COML.bat に書込まれる。
CM_FIL は MS-DOS のコマンドではありません。
MS-DOSを便利に使うための自作コマンドです。
C言語のページに、CM_FIL のソースファイルがあります。
バッチファイル実行中に、キーボードからの入力を可能にします。
キーボードからの入力された1行をそのまま表示します。
CM_FIL COML.bat のようにファイルを指定すれば、リダイレクト記号を使わないでもそのファイルに書込みます。

PAUSE >> NULL のように、画面にメッセージを表示しないようにもできます。
NULL は、このような目的に使われる特別のファイルです。
NULL は無(何もない)という意味です。NULL=ヌルまたはナル

リダイレクト < 入力の変更

コマンドへの入力を、キーボードからではなくファイルから与えます。
ECHO TYPE C:\ > TEST.txt
DIR < TEST.txt
TEST.txt に、TYPE C:\ と書込みます。
DIR < C:\ と同じ動作。

CM_FIL.exe COML.bat < SAMPL.txt
 キーボードから CM_FIL に文字列を与える代わりに、SAMPL.txt の内容を使う。
 コマンドに入力として与える文字列は、テキストファイルだけではなく、
 例えば TYPE などの、文字列を画面に表示するコマンドでもよい。

パイプ | コマンドの出力を、次のコマンドの入力とする

出力先を変更するリダイレクトでは、コマンドの出力をリダイレクト先のファイルに書込みますが、パイプの場合はコマンドの出力をパイプ先のコマンドに処理させます。
DIR | SORT  DIR の出力(デイレクトリの内容)を SORT に与え、整列して表示します。

ECHO %1 | CM_FIL.exe COML.bat
 コマンドライン %1 を画面ではなくCM_FIL に与える。
 CM_FIL は キーボードからの入力を指定ファイルに書込む。
 この場合は、キーボードの代わりに ECHO からの出力を CM_FIL に書込む。

バッチプログラムは起動してしまってから、コマンドを追加して与えることができません。
CM_FIL.exe は、バッチプログラムを実行中にキーボードからコマンドを入力して COML.bat などのバッチファイルに書込み、現在実行中のバッチファイルから呼び出すために作ったコマンドです。(MS-DOS のページにあります。)

コマンドラインの判定

バッチファイルを起動するときには、コマンドラインからデータを与えることができます。
これをパラメータといいます。
ABC.bat C SAMP のように起動するバッチファイルの例を示します。
コマンドラインからドライブ名とファイル名を与えて、そのドライブの内容をファイルに書込みます。
ABC.bat
IF %0%1==%1 GOTO ER1
DIR %1:\ > %2.txt
:ER1
ECHO ドライブの指定がありません。
IF "%2"=="" ECHO ファイルの指定がありません。
:END
 
%1 NULL なら ER1 へ
DIR C:\ > SAMP.txt 
:ER1 はラベルです。
 
%2 が NULL のとき
:END はラベルです。
%0 にはバッチファイル名が、C:\BATCH\ABC.bat のように格納されます。
%1 には、一番目のパラメータが C のように入ります。
%2 には、二番目のパラメータが SAMP のように入ります。
パラメータは %0 〜 %9 まであります。

キー入力による分岐 ERRORLEVEL

バッチファイルの実行中に、CHOICE コマンドを使ってキーボードから1文字だけデータを与えることができます。
キーボードから入力された文字は、ERRORLEVEL という変数にそのキーコードが代入されます。
ERRORLEVEL は IF コマンドで処理します。
CHOICE コマンドは用法が限られるので、ここでは MS-DOS5.0以前に含まれていた BATKEY と同じコマンド BAT2 を作って使っています。(MS-DOS のページにあります。)
上例の場合、D を入力した場合は D と表示されますが、 A を入力した場合は、D C B が表示されてから A が表示される点に注目して下さい。
ABC.bat
ECHO A 〜 E キーを押して下さい。
ECHO E で終了します。
:START
BAT2
IF ERRORLEVEL 70 GOTO START
IF ERRORLEVEL 69 GOTO END
IF ERRORLEVEL 68 ECHO D
IF ERRORLEVEL 67 ECHO C
IF ERRORLEVEL 65 ECHO B
IF ERRORLEVEL 65 ECHO A
GOTO START
:END
 
メッセージを表示します。
 
:START はラベルです。
1キー入力
F 以上ならば START へ
E なら END へ
D を表示
C を表示
B を表示
A を表示
START へ
:END はラベルです。

キーコード

 - - 03 -  13 -  27 -   50 1 2 3 4 5 6 7 8 9    90 1 2 3 4 5 6 7 8 9
   BREAK   CR   ESC      2 3 4 5 6 7 8 9 : ;     Z [ \ ] ^ _   a b c

 -  28  29  30 31  32   60 1 2 3 4 5 6 7 8 9   110 1 2 3 4 5 6 7 8 9
    →  ←  ↑ ↓ SPACE  < = > ? @ A B C D E     d e f g h i j k l m

 30 1 2 3 4 5 6 7 8 9   70 1 2 3 4 5 6 7 8 9   120 1 2 3 4 5 6 7 8 9
        ! " # $ % & '    F G H I J K L M N O     n o p q r s t u v w  

 40 1 2 3 4 5 6 7 8 9   80 1 2 3 4 5 6 7 8 9   130 1 2 3 4 5 6 7 8 9
  ( ) * + , - . / 0 1    P Q R S T U V W X Y     x y z { | } ~

上段のキーコードは、対応する文字のアスキーコードを 10進数で表わした
ものと同じです。
環境変数

コンピュータのプログラムには、数値などを代入するための変数が使われています。
変数には、数値だけではなく、画面に表示するための文字なども代入できます。

MS-DOS(command.com) もプログラムですから、たくさんの変数が使われています。
MS-DOS で使われている変数の内、利用者(ユーザー)が直接利用できるものを環境変数といいます。
環境変数は path のように、主に MS-DOS の動作環境を代入(設定)します。

環境変数に代入できるのは文字だけに決められているので、環境文字列と呼ばれることもあります。
MS-DOS は、実際の動作を始める前に、AUTOEXEC.bat というバッチプログラムを実行するようになっているので、いつも同じ動作環境を設定したい場合は、ここに書いておきます。

自分で勝手に変数を作って、バッチファイルの中で使うこともできます。

現在設定されている環境変数を表示するには
SET と入力します。現在設定されている環境変数が表示されます。
C:\>SET
TMP=C:\WINDOWS\TEMP
winbootdir=C:\WINDOWS
COMSPEC=C:\WINDOWS\COMMAND.COM
SOUND=C:\SOUND16A
PROMPT=$p$g
TEMP=C:\DOS
DIRCMD=/OGN
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\ DOS
windir=C:\WINDOWS
CMDLINE=DOSKEY /INSERT
C:\>

環境変数を変更/新設するには
変更/新設   SET 変数名=設定値(設定する文字)
変数の消去   SET 変数名=

C:\>SET PATH=D:\  PATH の設定値を D:\ に変更
C:\>SET X=WINDOWS   変数 X を 新設し、WINDOWS と代入する
C:\>SET X=  変数 X を消去する

なお、環境変数 PATH はよく使われるので、同じ名前の設定用コマンドがあるので、SET コマンドを使う必要はありません。
C:\>PATH=D:\  PATH の設定値を D:\ に変更
C:\>PATH D:\  PATH の設定値を D:\ に変更
C:\>PATH=   PATH の設定内容を表示する
C:\>PATH=D:\
C:\>PATH    PATH の設定内容を表示する
C:\>PATH=D:\
C:\>

バッチファイルの中で使うには
環境変数は % で囲んで書きます。
バッチファイルの例
TEST.bat
DIR %X%   X のディレクトリーを表示する

上記のバッチファイルの使用例
TEST.bat
C:\>SET X=WINDOWS   変数 X を 新設し、WINDOWS と代入する
C:\>TEST X   DIR WINDOWS と入力したのと同じ


T


  mtoga@sannet.ne.jp   登録日 '96. 6.15
URL : http://www.page.sannet.ne.jp/mtoga/index.html