gccrun.cmd その6
gccrun.cmd では、gcc で C ソースコードのコンパイルとリンクをして、できあがったアプリケーションを実行するというのがメインの処理になっている。
それ以外では、いくつかのエラー処理を行う。
REM 引数チェック if "%1"=="" goto argerr if not exist "%1" goto srcerr
gccrun.cmd の先頭には、引数をチェックする処理が書かれており、エラーの種類によって、対応したラベルにジャンプするようになっている。
エラーの種類は二つあり、一つ目は、引数エラーである。引数エラーとは、gccrun.cmd 実行の際に、何も引数を渡さなかった場合に発生するものである。引数エラーが発生した場合、処理は :argerr
ラベルに移る。
:argerr REM 引数エラー goto err
:argerr
ラベル直下では、:err
ラベルにジャンプするという処理を行う。
二つ目のエラーは、入力ファイルエラーだ。第一引数として渡した名前のファイルが実在しなかった場合に発生し、処理は :srcerr
ラベルに移る。
:srcerr REM 入力ファイルエラー echo file "%1" is not exist goto err
:srcerr
ラベル直下では、画面上にメッセージを表示する処理を行う。すなわち、「そのような名前のファイルが存在しない」ということを伝えるのである。そののち、処理は :err
ラベルに移行する。
:err
ラベル直下では、以下の処理を行う。
:err REM 一般エラー echo usage: %~nx0 filename.c [-c^|-w] goto end
すなわち、echo コマンドによって、gccrun.cmd の使い方を画面に表示するのである。
usage: gccrun.cmd filename.c [-c|-w]
引数を受け取るバッチファイルのようなコンソールアプリケーションには、このように、使い方を表示する機能を持たせることによって、使い方を忘れてしまったときでも、すぐに使用を再開できるようになる。
%~nx0
とは、%0 の変形である。n はファイル名を表し、x は拡張子を表している。
%0 とは、バッチファイル内において、バッチファイルが起動するきっかけとなったコマンドを表す変数である。たとえば、"C:\My Apps\gccrun"
というコマンドによって起動した場合、%0 は "C:\My Apps\gccrun"
という文字列を表す。
%0 の内容は、一意に定まらないため、%~nx0
という表現によって、必ず、gccrun.cmd
という文字列になるように変換を行っている。
[-c^|-w]
という表記は、画面上では [-c|-w]
と表示される。パイプ記号 |
を ^
によってエスケープしているのだ。
:end