最近のMicrosoft Windowsであれば何でもPowerShellで良いのかと思うと、
標準入出力を使うと文字コードがおかしかったりして、
追求する時間もないのでMS-DOSの時代からあるバッチファイル(.bat
)を使うことになってしまう。
バッチファイルからバッチファイルを呼ぶには、3通りの方法があって挙動が全て違うのだが、 いつも分からなくなってしまうので、まとめておく。
call
を使う
以下のように2つのバッチファイルを用意する。
call.bat
からsubroutine.bat
を呼び出している。
>type subroutine.bat @echo off echo Subroutine is called. >type call.bat @echo off echo Before call call subroutine.bat echo After call結果は以下のようである。
>call.bat Before call Subroutine is called. After callつまり、バッチファイルからバッチファイルをサブルーチン的に呼び出す方法は、この
call
を使う方法である。
start
を使う
以下のように2つのバッチファイルを用意する。
start.bat
からsubroutine.bat
を呼び出している。
>type subroutine.bat @echo off echo Subroutine is called. >type start.bat @echo off echo Before start call subroutine.bat echo After start結果は以下のようである。 まず、
start.bat
を実行したコマンドプロンプトウィンドウでは以下のように表示される。
>start.bat Before start After start同時に、以下のような内容を表示する新しいコマンドプロンプトウィンドウも新しく開かれる。
Subroutine is called. >
バッチファイルをそのまま実行する
以下のように2つのバッチファイルを用意する。
direct.bat
からsubroutine.bat
を呼び出している。
>type subroutine.bat @echo off echo Subroutine is called. >type direct.bat @echo off echo Before direct call call subroutine.bat echo After direct call結果は以下のようである。
>direct.bat Before direct call Subroutine is called.つまり、バッチファイルからバッチファイルを呼んでいるが、呼ばれたバッチファイルが終わっても呼び出し元のバッチファイルには戻らない。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。