バッチプログラム中から、別のバッチプログラムを呼び出す(call)
CALLコマンド
説明 : バッチプログラム中から、別のバッチプログラムを呼び出す。
call バッチプログラム名 パラメータ(引数)
もしくは
call :ラベル名 パラメータ(引数)
パラメータ(引数)について
引数の値は、受け渡されたバッチプログラム(ラベル)内の、%1,%2,%3,%(数字)の値に挿入される。%1なら、 1番目に記載パラメータの値が入力される。尚、受け渡されるバッチプログラムで使用でいる変数は、%(数字)以外で、 その他特殊な変数が存在する。 以下に示す。
%~1 - すべての引用句 (") を削除して、%1 を展開します。
%~f1 - %1 を完全修飾パス名に展開します。
%~d1 - %1 をドライブ文字だけに展開します。
%~p1 - %1 をパスだけに展開します。
%~n1 - %1 をファイル名だけに展開します。
%~x1 - %1 をファイル拡張子だけに展開します。
%~s1 - 展開されたパスは、短い名前だけを含みます。
%~a1 - %1 をファイル属性に展開します。
%~t1 - %1 をファイルの日付/時刻に展開します。
%~z1 - %1 をファイルのサイズに展開します。
%~$PATH:1 - PATH 環境変数に指定されているディレクトリを検索し、最初に見つかった完全修飾名に %1 を展開します。 環境変数名が定義されていない場合、または検索してもファイルが見つからなかった場合は、この修飾子を指定すると空の文字列に 展開されます。
修飾子を組み合わせて、複合結果を得ることもできます:
%~dp1 - %1 をドライブ文字とパスだけに展開します。
%~nx1 - %1 をファイル名と拡張子だけに展開します。
%~dp$PATH:1 - PATH 環境変数に指定されているディレクトリを検索して %1 を探し、 最初に見つかったファイルのドライブ文字とパスだけに展開します。
%~ftza1 - %1 を DIR の出力行のように展開します。
サンプルソース
「call e:\calltest.bat 引数」 で、calltest.bat内に引数の値が渡されることを確認。
(入力)
call e:\calltest.bat 123 456 789
※calltest.bat内
echo %1 %2 %3
(出力)
123 456 789
サンプルソース
「call e:\calltest.bat 引数」 で、引数にファイルパスを記載することで、該当ファイルの ファイルサイズの値をe:\calltest.batに渡すことが可能。e:\test.txtのファイルサイズを10バイトとする。
(入力)
call e:\calltest1.bat 123 456 e:\test.txt
※calltest1.bat内
echo %1 %2 %~z3
(出力)
123 456 10
サンプルソース
「call :ラベル名 引数」 で、ラベルに引数を受け渡せることを確認。
(入力)
call e:\calltest2.bat 123 456
※calltest2.bat内
@echo off
echo %1 %2
call :sub_label 789 987
goto :EOF
:sub_label
echo %1 %2
goto :EOF
(出力)
123 456
789 987