バッチファイルの使用、パート3:IFコマンド
このヒントは、バッチファイルの使用に関するシリーズの続きです。中断したところから再開できるように、前のヒントに(再)アクセスすることをお勧めします。これまで、次のコマンドについて説明してきました:DIR、REM、ECHO、FIND、TIME、およびTIMEOUT。また、次の演算子も使用しました:ファイルへの出力(>)、注釈(::)、エコーなし(@)、パイプ(|)、および連結(&)。
最後に、%1、%2、%3などの組み合わせでバッチファイルに渡されるパラメーターを使用することがわかります。
このヒントでは、バッチファイルでの条件付き処理の実行に関連するコマンドに焦点を当てます。これらには、IF、CHOICE、GOTO、および「:label」の特別な構文が含まれます。
Do.batという非常に便利なバッチファイルがあります。これらのプログラムがどこにあるかに関係なく、プログラムを実行するのは「ラッパー」にすぎません。
したがって、たとえば、Prog1.exeというプログラムを実行する場合は、単に
と入力します。
C:\Bat> DO Prog1
Prog2.exeを実行したい場合は、
と入力します。
C:\Bat> DO Prog2
Do.batの優れている点は、作成時に、使用するすべてのプログラムの場所を入力したことです。したがって、たとえば、Prog1.exeは「C:\ Programs \ MyPrograms \ Prog1.exe」にあり、Prog2.exeは「D:\ Utilities \ Barry \ Prog2.exe」にあることを覚えておく必要はありません。 。さらに、これらの長いパス名を再度入力する必要はありません。
私のDo.batファイルは次のようになります:
@ECHO OFF GOTO %1 :Prog1 "C:\Programs\My Programs\Prog1.exe" GOTO Done :Prog2 "D:\Utilities\Barry\Prog2.exe" GOTO Done :Done
ファイルの最初の行は、他の行が表示されないようにします。この後にGOTO行が続きます。この行は、制御が転送されるラベルの名前をパラメーターとして取ります。そして、このラベルは、最初にDo.batに渡されたパラメーターでもあることがあります。したがって、Do.batを呼び出して、パラメーターとして「Prog1」を渡すと、.batファイルは「:Prog1」という名前のラベルにGOTOを実行します(これらは大文字と小文字を区別しません)。実行は上から下に順番に続くため、次に実行されるコマンドはProg1.exeを呼び出すコマンドです。このプログラムが終了した後、.batファイルは「GOTODone」コマンドを実行して続行します。 「:Done」ラベルはファイルの最後の行であるため、このポイントに達すると、.batファイルが終了します。 (EXITコマンドがありますが、それを実行すると、.batファイルだけでなく、CMDセッション全体も終了します。これはおそらくあなたがやりたいことではありません。)
または、CHOICEコマンドを使用して、実行するプログラムを選択するための簡単なメニューを作成することもできます。この場合、次のようなChoice.batというファイルを作成できます。
@ECHO OFF ECHO Select 1 to run Prog1 ECHO Select 2 to run Prog2 ECHO Select Q to quit CHOICE /C 12Q /T 10 /D Q GOTO %ERRORLEVEL% :3 ECHO Quitting GOTO Done :2 "D:\Utilities\Barry\Prog2.exe" GOTO Done :1 "C:\Programs\My Programs\Prog1.exe" GOTO Done :Done
CHOICEコマンドは、1、2、またはQを入力するためのプロンプトをユーザーに提供します(デフォルトでは、大文字と小文字は区別されません)。その他の文字はすべて無視されます。 / Tスイッチは10秒でタイムアウトするように指示します。その時点で、プロシージャはQオプションが選択されたかのように動作します(/ D QはデフォルトオプションがQであることを示します)。 CHOICEコマンドの実行後、変数%ERRORLEVEL%が選択されたオプションの序数に設定されます。したがって、ユーザーが1を選択した場合、%ERRORLEVEL%は1に設定されます。ユーザーが2を選択した場合、%ERRORLEVEL%は2に設定されます。ユーザーがQを選択した場合、%ERRORLEVEL%は3に設定されます。次に、%ERRORLEVEL%で示されるラベルをGOTOし、要求されたアクションを実行します。
IFコマンドに関するヒント全体を書くこともできますが、基本的には次のようにします。
IF arg1 operator arg2 command
ここで、「arg1」と「arg2」はテスト中の引数、「演算子」はEQU、NEQ、LSS、LEQ、GTR、GEQ(つまり、EQUal、等しくない、LeSS thanなど)のいずれかであり、「コマンド」はコマンドラインコマンド。
P1がある場合にエコーする単純なバッチファイルは、次のようになります。
@ECHO OFF IF [%1] EQU [] ECHO No Parameter passed IF [%1] NEQ [] ECHO Parameter P1 is '%1' GOTO:eof
(特定の複雑さを避けるために、引数の周りに[]を使用する習慣がありました。)
IFには他のフレーバーもあります。たとえば、エラーレベルをテストしたり、ファイルが存在するかどうかをテストしたり、ELSEステートメントを含めたりすることができます。
コマンドラインで、IF /?そして、あなたはあなたが何ができるかについての良い考えを得るでしょう。
このヒント(13185)は、Windows 7、8、および10に適用されます。