山本ワールド
Windowsプログラミング
アルゴリズム Vitual C++ 2008/2013によるWin32/Win64 APIレベルのプログラム 基礎 Vitual C++ 2008/2013によるAPIレベルのプログラム(32/64bit) Wix3でインストーラーを作る Visual C++ 2008 Standard Editonによるフォームアプリケーションのプログラム(32/64bit) Vitual C++ 2008 Standard EditonによるAPIレベルのプログラム(32/64bit) Windows 7対応 Visual C++ 2008 ExpressによるAPIレベルのプログラム Visual C++ 2005 ExpressによるAPIレベルのプログラム Visual C++ Versiosn 5 BORLAND C++ Windowsプログラム全般 Excel VBA その他if文
概要
このページは、Windowsのバッチファイルのif文について記述します。
if文は指定した条件に対して真および偽をチェックします。
書式は以下の4種類があります。
if文は指定した条件に対して真および偽をチェックします。
書式は以下の4種類があります。
真の時実行するコマンドが1行の場合
if 条件等 真の時実行するコマンド
真の時実行するコマンドが複数行の場合
if 条件等 ( 真の時実行するコマンド1 真の時実行するコマンド2 )
真と偽の時実行するコマンドが複数行の場合
if 条件等 ( 真の時実行するコマンド1 真の時実行するコマンド2 ) else 偽の時実行するコマンド
真と偽の時実行するコマンドが複数行の場合
if 条件等 ( 真の時実行するコマンド1 真の時実行するコマンド2 ) else ( 偽の時実行するコマンド1 偽の時実行するコマンド2 )
値の比較
記述方法
if [/i] [not] 値1 比較演算子 値2 実行するコマンド値1と値2を比較し真偽に応じてコマンドを実行します。
/i を指定すると大文字小文字を区別せずに比較します。
[]は省略可能なことを示しています。
notを指定すると条件の真偽が反転します。
演算子 | 意味 |
---|---|
== | 値1==値2 |
EQU | 値1==値2 |
NEQ | 値1!=値2 |
LSS | 値1<値2 |
LEQ | 値1<=値2 |
GTR | 値1>値2 |
GEQ | 値1>=値2 |
以下のバッチファイルは、バッチファイルの中で定義した環境変数に対して値の比較、消去した環境変数に対する比較、文字列の比較のサンプルです。
バッチファイル
rem if文の条件判断のサンプル set test=256 if %test%==256 echo 真 if %test% GTR 128 echo 真 set test= if "%test%"=="" echo 真 set test= if not "%test%" NEQ "" echo 真 set test=abc if %test%==ABC ( echo 真 )else echo 偽 if /i %test%==ABC ( echo 真 )else echo 偽 pause
実行結果
D:¥bat¥if>rem if文の条件判断のサンプル D:¥bat¥if>set test=256 D:¥bat¥if>if 256 == 256 echo 真 真 D:¥bat¥if>if 256 GTR 128 echo 真 真 D:¥bat¥if>set test= D:¥bat¥if>if "" == "" echo 真 真 D:¥bat¥if>set test= D:¥bat¥if>if not "" NEQ "" echo 真 真 D:¥bat¥if>set test=abc D:¥bat¥if>if abc == ABC (echo 真 ) else echo 偽 偽 D:¥bat¥if>if /I abc == ABC (echo 真 ) else echo 偽 真 D:¥bat¥if>pause 続行するには何かキーを押してください . . .
ファイルの存在をチェック
記述方法
ファイルの存在をチェックします。if [not] exist ファイル名 コマンド[]は省略可能なことを示しています。
notを指定すると条件の真偽が反転します。
以下のバッチファイルは、test.txtというファイルを作成し、if文でファイルの存在を確認します。その後test.txtは削除します。
バッチファイル
rem ファイルを作成しファイルの存在を確認します echo 1234 > test.txt if exist test.txt echo test.txtファイルは存在します。 del test.txt pause
実行結果
D:¥bat¥if>rem ファイルを作成しファイルの存在を確認します D:¥bat¥if>echo 1234 1>test.txt D:¥bat¥if>if exist test.txt echo test.txtファイルは存在します。 test.txtファイルは存在します。 D:¥bat¥if>del test.txt D:¥bat¥if>pause 続行するには何かキーを押してください . . .
フォルダーの存在をチェック
フォルダーの存在をチェックします。
notを指定すると条件の真偽が反転します。
以下のバッチファイルは、testdirというフォルダーを作成し、if文でフォルダーの存在を確認します。その後作成したフォルダーは削除します。
記述方法
if [not] exist フォルダー名\ コマンド[]は省略可能なことを示しています。
notを指定すると条件の真偽が反転します。
以下のバッチファイルは、testdirというフォルダーを作成し、if文でフォルダーの存在を確認します。その後作成したフォルダーは削除します。
バッチファイル
rem フォルダーを作成しフォルダーの存在を確認します md testdir > nul if exist testdir¥ echo testdirフォルダーは存在します。 rd testdir pause
実行結果
D:¥bat¥if>rem フォルダーを作成しフォルダーの存在を確認します D:¥bat¥if>md testdir 1>nul D:¥bat¥if>if exist testdir¥ echo testdirフォルダーは存在します。 testdirフォルダーは存在します。 D:¥bat¥if>rd testdir D:¥bat¥if>pause 続行するには何かキーを押してください . . .
環境変数が定義されているかチェック
記述方法
環境変数が定義されているか確認します。if [not] defined 環境変数名 コマンド[]は省略可能なことを示しています。
notを指定すると条件の真偽が反転します。
以下のバッチファイルは定義した環境変数が存在するかチェックします。
バッチファイル
rem 環境変数を定義し環境変数が定義されているのを確認します set TEST12=ABCD if defined TEST12 echo 真 pause
実行結果
D:¥bat¥if>rem フォルダーを作成しフォルダーの存在を確認します D:¥bat¥if>set TEST12=ABCD D:¥bat¥if>if defined TEST12 echo 真 真 D:¥bat¥if>pause 続行するには何かキーを押してください . . .
エラーレベルのチェック
エラーレベルが値と等しいかより大きい場合真となります。
エラーレベルとはコマンド等が一般的に正常に動作した場合は0を返しそれ以外の場合は0以外のエラーレベルを返します。
notを指定すると条件の真偽が反転します。
以下のバッチファイルは、エラーレーベルを設定するサブルーチンerrsetでエラーレベルを10に設定した後、if文でエラーレベルのチェックを行うサンプルです。
エラーレベルとはコマンド等が一般的に正常に動作した場合は0を返しそれ以外の場合は0以外のエラーレベルを返します。
記述方法
if [not] errorlevel 値 コマンド[]は省略可能なことを示しています。
notを指定すると条件の真偽が反転します。
以下のバッチファイルは、エラーレーベルを設定するサブルーチンerrsetでエラーレベルを10に設定した後、if文でエラーレベルのチェックを行うサンプルです。
バッチファイル
call :errset 10 if errorlevel 10 echo エラーレーベルは10以上でした pause goto :eof :errset exit /b %1
実行結果
D:¥bat¥if>call :errset 10 D:¥bat¥if>exit /b 10 D:¥bat¥if>if errorlevel 10 echo エラーレーベルは10以上でした エラーレーベルは10以上でした D:¥bat¥if>pause 続行するには何かキーを押してください . . . D:¥bat¥if>goto :eof
Copyright (C) 2012 山本ワールド All Rights Reserved.