DOSバッチファイル
DOSの実行可能ファイルはEXE、COM、BATの3種類があります。このうち、EXEとCOMファイルはバイナリ形式であり、BATファイルだけがテキスト形式であり、直接読むことができます。したがって、BATファイルは上記のバイナリ実行可能ファイルと比べて、内容は簡単に多くなります。これらのファイルにはDOSコマンドのセットが含まれています。通常はバッチファイルといいます。バッチファイルの構成は簡単ですが、非常に大きな用途で使用されています。たとえば、毎回同じコマンドを実行すると、面倒くさいと思います。バッチファイルに入れて実行すれば、ずっと楽です。AUTOEXEC.BATは特殊なバッチファイルで、DOSの起動時に自動的に動作し、システムの構成において非常に大きな役割を果たしています。したがって、DOSをマスターするには、バッチファイルを学ぶ必要があります。バッチファイルのコマンドとその使用について説明します。
DOSが持参するバッチコマンド:
@:この記号をバッチファイルの他のコマンドの前に置いて実行するとコマンド自体が表示されません。@ECHO OFF命令のように、バッチファイルの最初によく使われます。
CALL:バッチファイルから他のバッチファイルを呼び出し、呼び出しが完了したら元のバッチファイルを実行します。使い方:CALL[バッチファイル名]注:COMMAND/Cコマンドを使って同様の操作を行うこともできます。
CHOICE:選択コマンド。これはDOS外部コマンドですが、バッチファイルで主に使用されます。CHOICEコマンドが実行されると、選択可能な項目が提示されます。この場合はボタン一つで選択します。使用法:CHOICE:[/C[:]ボタン表[/N][/S][/T[:]選択値、秒数][表示テキスト]のうち、/Cはオプションを示すボタンであり、/Nはヒント情報を表示しない、/Sは文字の大きさに敏感な方式を示し、/Tはバッチが決められた時間内に選択されない場合、自動実行/Cで定義されているいずれかの選択値を表します。表示テキストはCHOICEコマンド実行時のメッセージです。選択結果はERRORL EVEL値で表されます。
ECHO:指定された情報を表示します。通常は画面に表示されます。ECHO HelloのようにスクリーンにHelloの文字を表示します。また、ECHO ON|OFFは、バッチファイル実行時にコマンド自体が表示されるかどうかを設定します。ECHO OFFは@と同じ意味ですが、他のコマンドの前に置いてはいけません。単独のコマンドです。
FOR:指定されたファイルに対して、対応するコマンドを実行します。みんなは知っていて、DOSの下で多くの命令はワイルドカードを支持して、例えばか?と**は一回に一回に一回のファイルを指定することができて、とても便利です。しかし、すべてのDOSコマンドがワイルドカードをサポートしているわけではなく、TYPE(ファイル内容表示コマンド)などはサポートされていません。FORコマンドがあれば大丈夫です。TYPEコマンドを一度に複数のファイルを表示できるようにすることができます。使用法:FOR%変数名IN(ファイルセット)DOコマンド[コマンドパラメータ]注:以上がFORコマンドの固定形式で、INとDOの位置が正しいと、文法エラーを提示します。FOR%F IN(*.*)DO TYPE%Fコマンドのように、TYPEコマンドは一回に複数のファイルを表示することができます。注:%Fは変数名であり、%Gなどで代用することもできますが、前後は必ず一致しています。バッチファイルの代わりに%Fを使用します。
GOTO:バッチファイル内部のいずれかのラベルに移動して実行します。ご存知のように、プログラミングではBASIC言語のGOTO命令のように、繰り返しまたはジャンプして実行していく必要があります。バッチファイルのGOTOコマンドでも同様の機能が可能です。使い方:GOTO[記号名]の中に、Helloなどの名前は自由に設定できます。「Hello」のような記号を設定すると、GOTO Helloコマンドで「Hello」の位置に移動し、バッチファイルを実行します。
IF:条件判断コマンド。これは有用なバッチ処理命令です。用法1:IF[NOT]EXISTファイル名コマンド[コマンドパラメータ]意味:もし[いいえ]が存在するなら、あるファイルを実行します。使用法2:IF[NOT]ERRORLEVELエラーは、代号コマンド[コマンドパラメータ]に戻ります。エラーが返したら、代号[いいえ]が指定の代号以上であれば、あるコマンドを実行します。ここで、ERRORL EVELはエラーリターンコードを表しています。多くのDOSコマンドに対しては、実行の結果が異なるため(実行に失敗したり、実行に失敗したり、ユーザに中断されたりするなど)、これらのコマンドは異なるコードを返して、結果を表す。IF ERRORL EVELコマンドは、この結果によって発生する異なるコードで異なるコマンドを実行し、通常はあるコマンドの後に使用されます。IF ERRORL EVEL 1 ECHO OK!現在のエラーがコードより大きいか1以上の場合、画面に「OK!」と表示されます。という文字があります使用法3:IF[NOT]文字列1=文字列2コマンド[コマンドパラメータ]の意味:文字列1と文字列2[いいえ]が等しい場合、あるコマンドを実行します。
PAUSE:バッチファイルの実行を一時停止し、「任意のキーで続行」という文字を表示します。
REM:コメントを追加します。ファイルの可読性を高めるためには、実行されません。代わりに:を使ってもいいです。
SHIFT:変更可能なパラメータの位置をバッチファイルで変更します。代替可能なパラメータは特殊なパラメータです。バッチファイルでのみ使用できます。これらのパラメータは、ユーザがバッチコマンドを実行する時に入力します。例えば、DIR/S/Wコマンドを実行します。DIRはコマンド名で、/Sと/Wはその実行パラメータです。バッチファイルでは、これらのコマンドパラメータは、それぞれ代替パラメータに与えられます。例えば、/Sで構成される%1、/Wでも可能です。バッチファイルは、実行時に入力したパラメータを代替パラメータで操作します。例えば、現在はMYFILE.BATというバッチファイルがあります。コマンドラインの下でMYFILE.BAT YESを実行します。すると%0の値はMYFILE.BATです。%1の値は「YES」です。このバッチファイルではIFなどのコマンドで%1などのパラメータの値を判断し、これらの値によって異なる操作を実行します。SHIFTコマンドはパラメータを持たず、実行結果は%0の値を元%1の値に変更します。元%1の値は元%2の値になります。これに類推します。その不可逆性に注意してください。バッチファイルの実行時の運転パラメータは多いかもしれませんので、10個を超えるかもしれません。代わりのパラメータは%0から%9までしかできません。%9以降のパラメータ値を取得するには、SHIFTコマンドしか使えません。このとき、パラメータ列全体を前に倒します。
以上はDOSの独自のバッチ処理コマンドであり、これらのコマンドは非常に少ないことが分かります。複雑なプログラムを作成するには、上記のコマンドでは実現できないことが分かります。この時には他の実用的なバッチツールが必要です。有名で実用的なのはTESTIF、STRING、ASET、BATCHMAN、WBATなどです。以上のツールを使ってバッチファイルで非常に強力な機能を実現できます。さらに多くの高度な言語プログラムの機能を実現することもできます。だから、編集者がロットごとに文書を処理するといいです。詳しい文書だけでなく、発展しています。
以下はバッチファイルの作成について説明します。バッチファイルを作るのは難しくないです。方法さえわかればいいです。操作回数が増えるにつれて、ますます簡単になります。
まず、DOSが持参するEDITコマンドや他の編集ツールなどのテキストエディタを使って、PEDITなどの新しい空白のファイルを作成します。(もちろん、COPY CON命令で直接作成してもいいです。)そして、その中にあなたが完成したい機能によってバッチコマンドを入力します。いくつかのDOSコマンドのセットを実行したいだけなら、各ラインにDOSコマンドを入力してください。もっと複雑な作業を完了するためには、上記のバッチコマンドまたは上記のバッチ処理ツールが必要です。
以下は1%から100%までの一括処理プログラムを作成しました。参考にして、自分のプログラムを作成してください。
@echo off break off cls set c=0 writext 10 1 Wait...be delay 4:loop writext 10 9%c%count c if not%c==101 goto loop echo.set c=kpsh/f break on
その中で、WRITEXT、COUNT、BEとKPUSHを使いました。これらは全部決裁処理ツールです。WRITEXTはECHOの強化ツールで、カスタマイズして表示する効果があります。COUNTは変数の計算ツールで、元のCの値が1なら、COUNT Cを実行した後Cの値は2です。BEは強力なバッチ処理強化ツールで、Norton Utilties 8.0にあります。KPUSHはキーボードバッファです。
とにかく、バッチコマンドとバッチ処理強化ツールを使って、たくさんの強力なバッチファイルを作成できます。試してみてもいいです。多くのバッチツールは「スクリプトツール」からダウンロードできます。
DOSが持参するバッチコマンド:
@:この記号をバッチファイルの他のコマンドの前に置いて実行するとコマンド自体が表示されません。@ECHO OFF命令のように、バッチファイルの最初によく使われます。
CALL:バッチファイルから他のバッチファイルを呼び出し、呼び出しが完了したら元のバッチファイルを実行します。使い方:CALL[バッチファイル名]注:COMMAND/Cコマンドを使って同様の操作を行うこともできます。
CHOICE:選択コマンド。これはDOS外部コマンドですが、バッチファイルで主に使用されます。CHOICEコマンドが実行されると、選択可能な項目が提示されます。この場合はボタン一つで選択します。使用法:CHOICE:[/C[:]ボタン表[/N][/S][/T[:]選択値、秒数][表示テキスト]のうち、/Cはオプションを示すボタンであり、/Nはヒント情報を表示しない、/Sは文字の大きさに敏感な方式を示し、/Tはバッチが決められた時間内に選択されない場合、自動実行/Cで定義されているいずれかの選択値を表します。表示テキストはCHOICEコマンド実行時のメッセージです。選択結果はERRORL EVEL値で表されます。
ECHO:指定された情報を表示します。通常は画面に表示されます。ECHO HelloのようにスクリーンにHelloの文字を表示します。また、ECHO ON|OFFは、バッチファイル実行時にコマンド自体が表示されるかどうかを設定します。ECHO OFFは@と同じ意味ですが、他のコマンドの前に置いてはいけません。単独のコマンドです。
FOR:指定されたファイルに対して、対応するコマンドを実行します。みんなは知っていて、DOSの下で多くの命令はワイルドカードを支持して、例えばか?と**は一回に一回に一回のファイルを指定することができて、とても便利です。しかし、すべてのDOSコマンドがワイルドカードをサポートしているわけではなく、TYPE(ファイル内容表示コマンド)などはサポートされていません。FORコマンドがあれば大丈夫です。TYPEコマンドを一度に複数のファイルを表示できるようにすることができます。使用法:FOR%変数名IN(ファイルセット)DOコマンド[コマンドパラメータ]注:以上がFORコマンドの固定形式で、INとDOの位置が正しいと、文法エラーを提示します。FOR%F IN(*.*)DO TYPE%Fコマンドのように、TYPEコマンドは一回に複数のファイルを表示することができます。注:%Fは変数名であり、%Gなどで代用することもできますが、前後は必ず一致しています。バッチファイルの代わりに%Fを使用します。
GOTO:バッチファイル内部のいずれかのラベルに移動して実行します。ご存知のように、プログラミングではBASIC言語のGOTO命令のように、繰り返しまたはジャンプして実行していく必要があります。バッチファイルのGOTOコマンドでも同様の機能が可能です。使い方:GOTO[記号名]の中に、Helloなどの名前は自由に設定できます。「Hello」のような記号を設定すると、GOTO Helloコマンドで「Hello」の位置に移動し、バッチファイルを実行します。
IF:条件判断コマンド。これは有用なバッチ処理命令です。用法1:IF[NOT]EXISTファイル名コマンド[コマンドパラメータ]意味:もし[いいえ]が存在するなら、あるファイルを実行します。使用法2:IF[NOT]ERRORLEVELエラーは、代号コマンド[コマンドパラメータ]に戻ります。エラーが返したら、代号[いいえ]が指定の代号以上であれば、あるコマンドを実行します。ここで、ERRORL EVELはエラーリターンコードを表しています。多くのDOSコマンドに対しては、実行の結果が異なるため(実行に失敗したり、実行に失敗したり、ユーザに中断されたりするなど)、これらのコマンドは異なるコードを返して、結果を表す。IF ERRORL EVELコマンドは、この結果によって発生する異なるコードで異なるコマンドを実行し、通常はあるコマンドの後に使用されます。IF ERRORL EVEL 1 ECHO OK!現在のエラーがコードより大きいか1以上の場合、画面に「OK!」と表示されます。という文字があります使用法3:IF[NOT]文字列1=文字列2コマンド[コマンドパラメータ]の意味:文字列1と文字列2[いいえ]が等しい場合、あるコマンドを実行します。
PAUSE:バッチファイルの実行を一時停止し、「任意のキーで続行」という文字を表示します。
REM:コメントを追加します。ファイルの可読性を高めるためには、実行されません。代わりに:を使ってもいいです。
SHIFT:変更可能なパラメータの位置をバッチファイルで変更します。代替可能なパラメータは特殊なパラメータです。バッチファイルでのみ使用できます。これらのパラメータは、ユーザがバッチコマンドを実行する時に入力します。例えば、DIR/S/Wコマンドを実行します。DIRはコマンド名で、/Sと/Wはその実行パラメータです。バッチファイルでは、これらのコマンドパラメータは、それぞれ代替パラメータに与えられます。例えば、/Sで構成される%1、/Wでも可能です。バッチファイルは、実行時に入力したパラメータを代替パラメータで操作します。例えば、現在はMYFILE.BATというバッチファイルがあります。コマンドラインの下でMYFILE.BAT YESを実行します。すると%0の値はMYFILE.BATです。%1の値は「YES」です。このバッチファイルではIFなどのコマンドで%1などのパラメータの値を判断し、これらの値によって異なる操作を実行します。SHIFTコマンドはパラメータを持たず、実行結果は%0の値を元%1の値に変更します。元%1の値は元%2の値になります。これに類推します。その不可逆性に注意してください。バッチファイルの実行時の運転パラメータは多いかもしれませんので、10個を超えるかもしれません。代わりのパラメータは%0から%9までしかできません。%9以降のパラメータ値を取得するには、SHIFTコマンドしか使えません。このとき、パラメータ列全体を前に倒します。
以上はDOSの独自のバッチ処理コマンドであり、これらのコマンドは非常に少ないことが分かります。複雑なプログラムを作成するには、上記のコマンドでは実現できないことが分かります。この時には他の実用的なバッチツールが必要です。有名で実用的なのはTESTIF、STRING、ASET、BATCHMAN、WBATなどです。以上のツールを使ってバッチファイルで非常に強力な機能を実現できます。さらに多くの高度な言語プログラムの機能を実現することもできます。だから、編集者がロットごとに文書を処理するといいです。詳しい文書だけでなく、発展しています。
以下はバッチファイルの作成について説明します。バッチファイルを作るのは難しくないです。方法さえわかればいいです。操作回数が増えるにつれて、ますます簡単になります。
まず、DOSが持参するEDITコマンドや他の編集ツールなどのテキストエディタを使って、PEDITなどの新しい空白のファイルを作成します。(もちろん、COPY CON命令で直接作成してもいいです。)そして、その中にあなたが完成したい機能によってバッチコマンドを入力します。いくつかのDOSコマンドのセットを実行したいだけなら、各ラインにDOSコマンドを入力してください。もっと複雑な作業を完了するためには、上記のバッチコマンドまたは上記のバッチ処理ツールが必要です。
以下は1%から100%までの一括処理プログラムを作成しました。参考にして、自分のプログラムを作成してください。
@echo off break off cls set c=0 writext 10 1 Wait...be delay 4:loop writext 10 9%c%count c if not%c==101 goto loop echo.set c=kpsh/f break on
その中で、WRITEXT、COUNT、BEとKPUSHを使いました。これらは全部決裁処理ツールです。WRITEXTはECHOの強化ツールで、カスタマイズして表示する効果があります。COUNTは変数の計算ツールで、元のCの値が1なら、COUNT Cを実行した後Cの値は2です。BEは強力なバッチ処理強化ツールで、Norton Utilties 8.0にあります。KPUSHはキーボードバッファです。
とにかく、バッチコマンドとバッチ処理強化ツールを使って、たくさんの強力なバッチファイルを作成できます。試してみてもいいです。多くのバッチツールは「スクリプトツール」からダウンロードできます。