batファイル If文のサンプル(Windows)

WindowsのbatファイルのIf文のサンプルです。

目次

If文 If文とは / if文のサンプル
  数値の比較
  ネストのサンプル (if文の中にif文)
  否定(not) Aではない
  ファイル、フォルダが存在するか(exist)
  エラーコードを判定する(errorlevel)
  環境変数が定義されているか(defined)
演算子 比較演算子
  遅延変数のサンプル(if文/for文の注意点)※別ページ

If文とは

if 条件式 (
    処理
)
// else ifとelseを書く場合
if 条件式 (
    処理
) else if 条件式 ( 
    処理
) else (
  処理
)
  • 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
  • 条件が合致することをtrue(真)ともいいます。
  • 条件が合致しないことをfalse(偽)ともいいます。
  • 条件が合致しない場合、配下の処理は実行されず、その下(else if/else/if文終了)に進みます。
  • else ifは、複数記述できます。省略可です。
  • elseの処理は、どの条件も合致しなかったときに実行されます。elseは1つのみ記述できます。省略可能です。

if文のサンプル

文字列の値を比較する場合は、==を使用します。

@echo off
set a="ab"

if %a% == "ac" (
	echo acです
	
) else if %a% == "ab" (
	echo abです 出力されます
	
) else (
  echo それ以外です
) 
pause

2行目は、変数に値をセットしています。
4行目からif文が始まります。
7行目のelse ifはtrueになるのでその配下の処理が実行されます。
8行目の処理が実行されif文を抜けます。

数値の比較

数値の値を比較する場合は、equ等を使用します。

@echo off
set a=10

if %a% equ 10 (echo aは10と等しい)
if %a% neq 9  (echo aは9ではない)
if %a% gtr 9  (echo aは9より大きい)
if %a% geq 10 (echo aは10以上)
if %a% lss 11 (echo aは11より小さい)
if %a% leq 10 (echo aは10以下)

pause

 

ネストのサンプル (if文の中にif文)

ネストのサンプルです。AND条件の代わりになります。batファイルにAND条件はありません。

@echo off
set a="abc"
set b="abc"

if %a%=="abc" (
	if %b%=="abc" (
		echo abcです 出力されます
	)
)
pause

6行目は、if文の中にif文を記述しています。ネストの構造です。入れ子ともいいます。
5,6行目は、trueになり文字列が表示されます。

否定(Not) Aではない

If  not 条件式  Then 
  • 条件式がfalseの場合にtrueになります。
  • 条件式がtrueの場合にfalseになります。
@echo off
set a="abc"

if not %a%=="ccc" (
	echo trueです 出力されます
) 

if not %a%=="abc" (
	echo trueです
) else (
	echo falseです 出力されます
) 
pause

4行目は値の比較でfalseになり、それを否定するのでtrueになります。
8行目は値の比較でtrueになり、それを否定するのでfalseになります。

ファイル、フォルダが存在するか(exist)

if exist ファイル or フォルダ
  • ファイルまたはフォルダが存在する場合にtrueになります。
  • ファイルまたはフォルダが存在しない場合にfalseになります。
@echo off

if exist D:\Test1\test1.txt (
	echo 存在する 出力されます
) 
if exist D:\Test1 (
	echo 存在する 出力されます
) 
pause

3行目は、ファイルが存在するか判定しています。
11行目は、フォルダが存在するか判定しています。

エラーコードを判定する(errorlevel)

@echo off

call:test1

if not %errorlevel% == 0 (
	echo エラー 出力されます
) 
pause

:test1
exit /b 9

5行目は、エラーレベルが0以外の時に6行目が実行されます。
11行目は、変数errorlevelに9を設定してます。

環境変数が定義されているか(defined)

@echo off

if defined JAVA_HOME (
	echo 存在する 出力されます
)
pause

3行目は、環境変数のJAVA_HOMEが存在する時に4行目が実行されます。

比較演算子

比較演算子は、2つの値を比べて真偽値(true/false)を返します。
条件を満たしていればtrue,そうでない場合はfalseです。

比較演算子 説明
a == b aとbの値は等しい(文字列)
not a == b aとbの値は等しくない(文字列)
equ aとbの値は等しい(数値)
neq aとbの値は等しくない(数値)
gtr aはbより大きい(a > b)(数値)
geq aはbより大きい または 等しい(a >= b)(数値)
lss aはbより小さい(a < b)(数値)
leq aはbより小さい または 等しい(a <= b)(数値)

関連の記事

batファイル 遅延変数のサンプル(if文/for文の注意点)

△上に戻る