【Windows】バッチ(bat)で別のバッチを引数付きで呼び出す

Windowsバッチファイルから別のバッチファイルを呼び出せると、
複雑な処理を簡単に記述したり、過去のスクリプトを再利用したり、が簡単になります。
可読性も良くなり、柔軟に効率よくコーディングできるシーンが増えることと思います。
そこで、今回はバッチファイルから他のバッチファイルを呼び出す方法をご紹介します。
サンプルコード形式です。

call関数を使います。
引数を渡すこともできますし、if 引数を使って、引数が空の場合に別処理させることもできます。

それでは、順に見ていきましょう!

目次

バッチファイルから他のバッチファイルを呼び出す

想定のシーンはこのような形式です。
同じディレクトリ内に、呼び出したいバッチファイルがある状態を想定しています。

call_batch.bat
called.bat

このような形で、同じ
例ではcall_batch.batとしました。

@echo off
call called.bat
pause

呼び出す対象として、簡単に次を作成してコピペします。
例ではcalled.batとしました。

@echo off
echo batch file called.

うまくいっていれば、call_batch.batをダブルクリック実行すると、
「batch file called」のメッセージが表示されるはずです。
実行してみましょう。

想定通りに呼び出してめっせ

バッチファイルから他のバッチファイルを引数付きで呼び出す

何らかの処理を別の関数的に使う場合は、引数を扱うことがあります。
次は引数を付けて呼び出したいと思います。
先ほどと同様に、ディレクトリ内に呼び出されるバッチファイルがあるとします。

call_batch.bat
called.bat


呼び出す側、呼びだ出される側を次のようにします。
呼び出す側のバッチファイルから、
呼び出される側のバッチファイルを、sample.txtという引数をつけて呼び出します。
サンプルメッセージをテキストファイル出力し、そのテキストファイル名を引数で渡すものです。

@echo off
call called.bat sample.txt
pause
@echo off

rem 引数チェック
if "%~1"=="" (
    echo No filename provided.
    pause
    exit /b
)

rem ファイル名を引数にしてテキストファイル出力
set "filename=%~1"
echo this is called as "%filename%" > "%filename%"
echo File '%filename%' has been created.

実行するとこのようになります。

呼び出す際に、引数としてsample.txtとしていました。
たしかにその旨のメッセージが出ています。

ディレクトリを見てみると、たしかに指定どおりの名前でテキストファイル出力できています。
テキストファイルにはどのように記載されているでしょうか。

this is called as "%filename%"という内容を記載するコードでした。
set "filename=%~1"filename変数に引数%~1を指定していました。
引数は「sample.txt」でしたので、こちらも想定どおりです。

それでは、あえて引数なしで実行するとどのようになるでしょうか。
今回は、引数が存在するかの判定として、if "%~1"=="" (としていました。
if 引数を使って判定し、引数が空の場合はその旨のメッセージを表示します。
引数なしで実行する例として、called.batを直接ダブルクリック実行した結果がこちらです。

無事に、引数なしを判定してくれました。
テキストファイル名を引数指定する仕様でしたので、ファイル名が無いとエラーになります。
引数判定ができていれば、このようにエラーハンドリングできます。

これで、無事にバッチファイルから他のバッチファイルを呼び出すことができました。
スクリプトの途中で別の処理を呼び出した後に、元の処理に戻ったり、
再利用可能なサブルーチンを作成したり、
コードを可読性良く整理したり、
効率的な使い方に繋がりますので、是非試してみてはいかがでしょうか。

今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次