空の変数(=空変数、初期化された変数)かどうかの判定する際には、
変数を””で囲んで置かないと、期待どうりの動作をしてくれない。
また、遅延環境変数の場合には、同じく、変数を””で囲んでおかないと、期待どうりの判定をしてくれない。
参考HP:
http://blog.livedoor.jp/akf0/archives/51619076.html
●例1>変数を””で囲まない場合。
<スクリプト内容>
@echo off
set a=
echo %a%
if %a% == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause
<実行結果>
ECHO は <OFF> です。
( の使い方が誤っています。 ←空の変数が期待通りに処理されず、結果が異常となる。
続行するには何かキーを押してください . . .
●例2>変数を””で囲んだ場合。
<スクリプト内容>
@echo off
set a=
echo %a%
if "%a%" == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause
<実行結果>
ECHO は <OFF> です。
変数aは空です
続行するには何かキーを押してください . . .
●例3>変数を””で囲まない場合。 (遅延環境変数の場合)
<スクリプト内容>
@echo off
setlocal enabledelayedexpansion
set a=
echo !a!
if !a! == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause
<実行結果>
ECHO は <OFF> です。
変数aは空ではないです ←結果がおかしい。
続行するには何かキーを押してください . . .
●例4>変数を””で囲んだ場合。 (遅延環境変数の場合)
<スクリプト内容>
@echo off
setlocal enabledelayedexpansion
set a=
echo !a!
if "!a!" == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause
<実行結果>
ECHO は <OFF> です。
変数aは空です
続行するには何かキーを押してください . . .