5.関数/サブルーチン (1)バッチファイルの呼び出し 〜体育館の裏に呼び出されました。。。〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】
goto文ばかり使っていると訳分からなくなるので、バッチファイルを分割する。
その場合、バッチからバッチファイルを呼び出すときにはcall文を使用する。
呼び出すバッチファイルと呼び出されるバッチファイルが同じディレクトリにある場合は、ファイル名だけで
呼び出される。
拡張子は、あってもなくてもいいが、何を呼び出してるかを区別するために拡張子は書いた方がいいだろう。
カレントディレクトリにない場合は、環境変数PATHに設定すれば、ファイル名だけで呼び出される。
PATHにも設置されていない場合は、絶対パスで呼び出す。
拡張子を省略できるのは環境変数PATHEXTに設定されているものである。
D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>set pathext PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
実行環境
ディレクトリ構成
D:\MyDoc\work\#blog\コマンドプロンプト\call>tree /F 省略 ├─familyA │ child1.bat │ child2.CMD │ parent.bat │ ├─familyB │ cousin.bat │ └─familyC friend.bat
各バッチの内容
- parent.atb
call child1.bat call child1 call child2.cmd call child2 call cousin.bat call D:\MyDoc\work\#blog\コマンドプロンプト\call\familyC\friend.bat
- child1.bat
@echo 私は子供です。長男です。
- child2.CMD
@echo 私は子供です。次男です。
- cousin.bat
@echo 私はいとこです。
- friend.bat
@echo 私は友達です。
環境変数
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\MyDoc\work\#blog\コマンドプロンプト\call\familyB
実行結果
D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>parent.bat D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>call child1.bat 私は子供です。長男です。 D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>call child1 私は子供です。長男です。 D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>call child2.cmd 私は子供です。次男です。 D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>call child2 私は子供です。次男です。 D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>call cousin.bat 私はいとこです。 D:\MyDoc\work\#blog\コマンドプロンプト\call\familyA>call D:\MyDoc\work\#blog\コマンドプロンプト\call\familyC\friend.bat 私は友達です。
conってなに?
バッチファイルのエスケープ文字は^だ!!
バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたい
こんな方法があったのか! Windows用GNUコマンド群 「GNU utilities for Win32」