「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

call【コマンド】

pointこの用語のポイント

pointコマンドだよ

pointWindowsで使えるよ

pointバッチファイルの中でバッチファイルを呼び出すときに使うよ

スポンサーリンク

簡単に書くよ

call【コマンド】とは

コンピュータさんに対する命令文(コマンド)のひとつ
であり

バッチファイルからバッチファイルを起動するときに使うコマンド
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「バッチファイル」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

バッチファイルは「バッチ処理をやるためのファイル」です。
よく分からなければ、Windowsさん用の命令を寄せ集めて作ったプログラムだとお考えください。

以上を踏まえて

バッチファイルの中で別のバッチファイルを呼び出すときに使うコマンド

が「call」コマンドです。
「call」コマンドはWindows系で使えます。

書き方は

call [バッチファイル名] [バッチファイルに渡すパラメータ]

もしくは

call [ラベル名] [ラベルに渡すパラメータ]

です。

オプションは、ありません。

それでは実際に「call」コマンドの使い方を見てみましょう。

まずは

call [バッチファイル名] [バッチファイルに渡すパラメータ]

について、見てみますね。

例えば以下のようなバッチファイルがあったとします。

■hoge.bat
@echo off

echo "hoge:01"

call hoge_sub

echo "hoge:02"

pause


■hoge_sub.bat
@echo off

echo "hoge_sub:01"


「hoge.bat」を実行すると、以下のような結果が表示されます。

"hoge:01"
"hoge_sub:01"
"hoge:02"
続行するには何かキーを押してください . . .


「hoge:01」→「hoge_sub:01」→「hoge:02」の順で動いています。
この結果から「call hoge_sub」の部分で「hoge_sub.txt」が呼び出されたのが分かりました。

少し話がそれますが、他の部分も補足しておきます。

「@echo off」は「実行するコマンドを画面に表示しないでね」な命令です。
この指定がないとバッチファイルの中で実行したコマンドも画面に表示されてしまいます。
この例では

C:\>echo "hoge:01"
"hoge:01"

C:\>call hoge_sub

C:\>echo "hoge_sub:01"
"hoge_sub:01"

C:\>echo "hoge:02"
"hoge:02"

C:\>pause
続行するには何かキーを押してください . . .


のようになります。

pause」は「ちょっと待っとけ」の命令です。
「続行するには何かキーを押してください . . .」と画面に表示して一時待機してくれます。

これがバッチファイルからバッチファイルを呼び出すやり方です。

次に

call [ラベル名] [ラベルに渡すパラメータ]

について見てみます。
「ラベル」はバッチファイルの中に付けられる目印だと思ってください。
この目印をcallすることで、その場所に移動できるイメージです。

例えば以下のようなバッチファイルがあったとします。

■hoge2.bat
@echo off

echo "hoge:01"

call :label01

echo "hoge:02"

pause
exit

:label01
echo "label01"


このバッチファイルを実行すると、以下のような結果が表示されます。

"hoge:01"
"label01"
"hoge:02"
続行するには何かキーを押してください . . .


「hoge:01」→「label01」→「hoge:02」の順で動いていますね。
この結果から「call :label01」の部分で「:label01」に移動したのが分かりました。

これが大まかな流れですが、1つだけ注意点があります。
話を簡単にするために「移動」と書きましたが、実際には「分身」です。

hoge2.batを例に説明すると、hoge2.batさんは上から順番にお仕事をしていきます。
そして

call :label01

の行に来ると動きがピタッと止まります。

ここで分身の術です。

なんと!

hoge2.batさん2号が生まれます。

hoge2.batさん2号は「:label01」に移動してそこから一番下までお仕事をします。

echo "label01"

のところは、hoge2.batさんではなくhoge2.batさん2号がお仕事しているのです。
そして一番下までお仕事が終わると「後はよろしくね~」とhoge2.batさんに託し、hoge2.batさん2号は消えちゃいます。

hoge2.batさん2号が消えると、hoge2.batさんは続きのお仕事を一番下までやります。

echo "hoge:02"

pause
exit


の部分です。
流れとしては

call

のようになります。
補足として、この例では「exit」があるのでその時点で処理が終了しますが、なければ一番下まで(ラベルのところも再度)処理をやります。

これが「call」コマンドでラベルを指定するときのやり方です。

最後に引数について見てみましょう。
「call」コマンドでは、呼び出すバッチファイルやラベルに引数(パラメータ)を渡せます。

渡し方は単純にバッチファイル名やラベル名の後ろに半角スペースで区切って書くだけです。
例えば

call :label01 "C:\Program Files\desktop.ini" "param2"

のように書きます。

受け取る方は「%1」や「%2」で受け取ります。
1つ目のパラメータを受け取るときは「%1」です。
2つ目のパラメータを受け取るときは「%2」です。
パラメータが増えるほど、%パーセントの横の数字も増えていきます。

またパラメータの受け取りでは、パラメータがファイル名パスのときに便利な、特殊な指定をできます。
特殊な指定を一覧にまとめると、以下のようになります。

指定説明
%*パラメータ全部
%~1パラメータを囲ってる"ダブルクォーテーションを削除
%~f1パスとファイル名全部
%~d1ドライブ文字だけ
%~p1パスだけ。ドライブ文字もなし
%~n1ファイル名だけ拡張子もなし)
%~x1拡張子だけ
%~s1パスを省略表現
%~a1ファイルの属性だけ
%~t1ファイルの日付と時刻だけ
%~z1ファイルサイズだけ
%~$PATH:1環境変数「PATH」に指定されている場所を探して、同じ名前のファイルがあればパス付きで表示

数字の「1」の部分は、何番目のパラメータを対象にするかで変わります。
例えば2番目のパラメータのファイル名だけを取得したい場合は「%~n1」になります。
基本的な構造は「%~」+「指定」+「パラメータの位置」です。
例えば「%~nx1」のように複数の指定を組み合わせることもできます。

実際にやってみた方が分かりやすいですよね。

例えば以下のようなバッチファイルを動かすと

■hoge3.bat
@echo off

echo "hoge:01"

call :label01 "C:\Program Files\desktop.ini" "param2" "desktop.ini"

echo "hoge:02"

pause
exit

:label01
echo "label01"
echo %%1:%1
echo %%2:%2
echo %%*:%*
echo %%~1:%~1
echo %%~f1:%~f1
echo %%~d1:%~d1
echo %%~p1:%~p1
echo %%~n1:%~n1
echo %%~x1:%~x1
echo %%~nx1:%~nx1
echo %%~s1:%~s1
echo %%~a1:%~a1
echo %%~t1:%~t1
echo %%~z1:%~z1
echo %%~$PATH:1:%~$PATH:1
echo %%~$PATH:3:%~$PATH:3


私の環境では以下の結果になります。

"hoge:01"
"label01"
%1:"C:\Program Files\desktop.ini"
%2:"param2"
%*:"C:\Program Files\desktop.ini" "param2" "desktop.ini"
%~1:C:\Program Files\desktop.ini
%~f1:C:\Program Files\desktop.ini
%~d1:C:
%~p1:\Program Files\
%~n1:desktop
%~x1:.ini
%~nx1:desktop.ini
%~s1:C:\PROGRA~1\desktop.ini
%~a1:--ahs----
%~t1:2009/07/14 13:54
%~z1:174
%~$PATH:1:C:\Program Files\desktop.ini
%~$PATH:3:C:\Windows\System32\desktop.ini
"hoge:02"
続行するには何かキーを押してください . . .


細かい部分は頑張って見てください。
最初はちょっと取っ付きにくいかもしれませんが、使い方を覚えてしまうと便利です。
余裕があれば使い方をマスターしておいた方が良いと思います。

これが「call」コマンドでパラメータを受け渡しするときのやり方です。

そして、ここまでが「call」コマンドの使い方のすべてです、多分。
長々と書いてしまいましたが、使い方自体は単純です。

「call」に続けて、呼び出すバッチファイルやラベルとそいつに渡すパラメータを指定するだけ

です。


image piyo2

一言でまとめるよ

まぁ「call」ってコマンドが出てきたら「バッチファイルの中でバッチファイルを呼び出すときに使うんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像048
書籍画像029

おまけ

■訳してみるよ

「call(コール)」の意味は「呼ぶ」とか「名前をつける」とか「電話をかける」とかです。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
つくって、壊して、直して学ぶ Git&GitHub 入門
ウォーターサーバーのキャッチコピーを100本考える方法