バッチファイル/コマンドプロンプトで環境変数が設定されているかをチェックする方法




環境変数が設定されているかをチェックする方法
2パターンを紹介する。

IF文を使う

構文
IF DEFINED 変数 コマンド

DEFINED 条件は EXISTS と同様に動作しますが、環境変数名を受け取って、環境
変数が定義されている場合は真を返します。

環境変数が設定されてたら、コマンドを実行する

C:\>if DEFINED ENV echo OK

C:\>if DEFINED windir echo OK
OK


IF DEFINEDは、コマンド拡張機能に依存する。
デフォルト値では、コマンド拡張機能は有効だが
無効にすることもできる。
環境に依存しないでチェックするには以下のようにすればよい。



検索する方法

構文
set |findstr ^環境変数名= >nul 2>nul
if NOT {%ERRORLEVEL%} == {0} コマンド

環境変数が設定されてなかった、コマンドを実行する
「設定されていたら」の条件にしたい場合は、NOTを
削除すればいい。

C:\>set |findstr ^ENV= >nul 2>nul

C:\>if NOT {%ERRORLEVEL%} == {0} echo ENV not defined
ENV not defined

C:\>set |findstr ^windir= >nul 2>nul

C:\>if NOT {%ERRORLEVEL%} == {0} echo windir not defined

C:\>