call

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

注意

スクリプトまたはバッチファイルの外部で使用される場合、呼び出しはコマンドプロンプトには影響しません。

構文

call [drive:][path]<filename> [<batchparameters>] [:<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 を、見つかった最初のディレクトリの完全修飾名に展開します。 環境変数名が定義されていない場合、または検索によってファイルが見つからない場合、この修飾子は空の文字列に展開されます。

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

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

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

解説

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

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

  • 次のパラメーターを使用し <label> ます。

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

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

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

  • 再帰呼び出しを行う

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

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

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

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

call checknew

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

call checknew %1 %2

その他のリファレンス