■ はじめに
バッチの基本をメモっておく。
目次
【1】条件分岐 1)IF文 [補足] 遅延環境変数 【2】繰り返し 1)GO TO文 2)FOR 文 【3】サブルーチン 1)CALL文
【1】条件分岐
1)IF文
構文
if "【文字列1】"=="【文字列2】" 【コマンド】 if "【文字列1】"=="【文字列2】" ( 【コマンド1】 ) else ( 【コマンド2】 ) if "【文字列1】"=="【文字列2】" ( 【コマンド1】 ) else if "【文字列3】"=="【文字列4】" ( 【コマンド2】 ) else { 【コマンド3】 )
サンプル
@echo off set /p NUM="[1]を押せば「Hello!」[2]を押せば「How are you?」それ以外は「Good bye...」" if "%NUM%"=="1" echo "Hello!" if "%NUM%"=="2" ( echo "How are you?" ) else ( echo "Good bye." ) REM 一時停止 pause
サンプル
@ECHO OFF SET JDK_TEMP=%JAVA_HOME% if not exist "%JDK_TEMP%" ( REM Use Default JDK SET JDK_TEMP=C:\Program Files\Java\jdk1.8.0 ) echo JDK_TEMP : %JDK_TEMP% SET JDK_TEMP= echo Done
[補足] 遅延環境変数
* if/for文の中で値を変更したい場合、 if/for文全体を「setlocal EnableDelayedExpansion」と 「endlocal」で挟む必要がある * if/for文内で使用する変数は「%」ではなく「!」で囲む * 詳細は、以下の関連記事の「【7】遅延環境変数」を参照のこと
https://dk521123.hatenablog.com/entry/2010/11/23/165433
【2】繰り返し
1)GO TO文
* 行頭に「:」(コロン)を書き込み、 【ラベル名】を書き込むと、Go to後に、そこに移動する
構文
goto 【ラベル名】 :【ラベル名】 サンプル @echo off goto jump echo ここは表示されない :jump echo ここだけ表示する REM 一時停止 pause
2)FOR 文
構文
for /L %【変数】 in (【開始】,【増分】,【終了】) do 【コマンド】 or for /L %【変数】 in (【開始】,【増分】,【終了】) do ( 【コマンド】 )
サンプル
for /L %i in (1,1,10) do echo %i
参考資料
http://www.ne.jp/asahi/hishidama/home/tech/windows/bat.html#foreach
【3】サブルーチン
1)CALL文
参考資料
http://d.hatena.ne.jp/iroiro123/20121223/1356230875
http://rtaki.sakura.ne.jp/infra/?p=330
http://k-hiura.cocolog-nifty.com/blog/2009/10/windows-2320.html#for
関連記事
バッチ ~入門編 ~
https://dk521123.hatenablog.com/entry/2010/07/06/223905
バッチ ~ 基本編 / 変数の扱い ~
https://dk521123.hatenablog.com/entry/2010/11/23/165433
バッチ ~ 基本編 / コピー&削除 ~
https://dk521123.hatenablog.com/entry/2010/11/22/230218
バッチ ~ 基本編 / ファイル・ディレクトリの扱い ~
https://dk521123.hatenablog.com/entry/2010/11/23/164811
バッチ ~ 基本編 / リダイレクション ~
https://dk521123.hatenablog.com/entry/2015/03/16/232627
バッチ ~ タイマー起動 ~
https://dk521123.hatenablog.com/entry/2010/11/24/172455
バッチで簡易テストデータを作ることを考える
https://dk521123.hatenablog.com/entry/2021/04/24/182143