call

親バッチ プログラムを停止せずに、1 つのバッチ プログラムを別のバッチ プログラムから呼び出します。 call コマンドは、呼び出しのターゲットとしてラベルを受け入れます。

Note

コマンド プロンプトでは、スクリプトまたはバッチ ファイルの外部で使用されている場合、call は効果がありません。

構文

call [drive:][path]<filename> [<batchparameters>]] 
call [:<label> [<arguments>]]

パラメーター

パラメーター 説明
[<drive>:][<path>]<filename> 呼び出すバッチ プログラムの場所と名前を指定します。 <filename> パラメーターは必須であり、.bat または .cmd の拡張機能を持つ必要があります。
<batchparameters> バッチ プログラムに必要なコマンドライン情報を指定します。
:<label> バッチ プログラムの制御をジャンプするラベルを指定します。
<arguments> バッチ プログラムの新しいインスタンスに渡すコマンドライン情報を指定します (:<label> から始まります)。
/? コマンド プロンプトにヘルプを表示します。

バッチ パラメーター

バッチ スクリプト引数のリファレンス (%0%1、...) を次の表に示します。

バッチ スクリプトで %* 値を使用すると、すべての引数が参照されます (例: %1%2%3...)。

バッチ パラメーター (%n) の代替として、次のオプション構文を使用できます。

バッチ パラメーター 説明
%~1 %1 を展開し、周囲の引用符を削除します。
%~f1 %1 を完全修飾パスに展開します。
%~d1 %1 をドライブ文字のみに展開します。
%~p1 %1 をパスのみに展開します。
%~n1 %1 をファイル名のみに展開します。
%~x1 %1 をファイル名拡張子のみに展開します。
%~s1 %1 を、短い名前のみを含む完全修飾パスに展開します。
%~a1 %1 をファイル属性に展開します。
%~t1 %1 をファイルの日付と時刻に展開します。
%~z1 %1 をファイルのサイズに展開します。
%~$PATH:1 PATH 環境変数にリストされているディレクトリを検索し、%1 を最初に見つかったディレクトリの完全修飾名に展開します。 環境変数名が定義されていない場合やファイルが検索で見つからない場合、この修飾子は空の文字列に展開されます。

次の表は、修飾子とバッチ パラメーターを組み合わせて複合結果を得る方法を示しています。

修飾子を使ったバッチ パラメーター 説明
%~dp1 %1 をドライブ文字とパスのみに展開します。
%~nx1 %1 をファイル名と拡張子のみに展開します。
%~dp$PATH:1 PATH 環境変数にリストされているディレクトリで %1 を検索し、最初に見つかったディレクトリのドライブ文字とパスに展開します。
%~ftza1 %1 を展開して、dir コマンドに似た出力を表示します。

上の例では、%1 と PATH を他の有効な値に置き換えることができます。 %~ 構文は有効な引数番号で終了します。 %~ 修飾子を %* と一緒に使用することはできません。

解説

  • バッチ パラメーターの使用:

    バッチ パラメーターには、バッチ プログラムに渡すことができる任意の情報を含めることができます。たとえば、コマンドライン オプション、ファイル名、%0 から %9 までのバッチ パラメーター、変数 (例: %baud%) などです。

  • <label> パラメーターの使用:

    <label> パラメーターと共に call を使用すると、新しいバッチ ファイル コンテキストを作成し、指定したラベルの後のステートメントに制御を渡すことができます。 バッチ ファイルの末尾に初めて到達したとき (つまり、ラベルにジャンプした後)、制御は call ステートメントの後のステートメントに戻ります。 バッチ ファイルの末尾に 2 回目に到達したとき、バッチ スクリプトは終了します。

  • パイプとリダイレクト シンボルの使用:

    call と共にパイプ (|) やリダイレクト シンボル (< または >) を使用しないでください。

  • 再帰呼び出しを行う

    それ自体を呼び出すバッチ プログラムを作成できます。 ただし、終了条件を指定する必要があります。 そうしないと、親と子のバッチ プログラムが無限にループする可能性があります。

  • コマンド拡張機能の使用

    コマンド拡張機能が有効になっている場合、call に呼び出しのターゲットとして <label> を指定できます。 正しい構文は call :<label> <arguments>です。

別のバッチ プログラムから checknew.bat プログラムを実行するには、親バッチ プログラムで次のコマンドを入力します。

call checknew

親バッチ プログラムが 2 つのバッチ パラメーターを受け取り、それらのパラメーターが checknew.bat に渡されるようにしたい場合は、親バッチ プログラムに次のコマンドを入力します。

call checknew %1 %2