Windows XPのコマンドラインで、環境変数hogeの値が空(環境変数hogeがない)かどうかcmd.exeのifで調べたいのですが、お知恵を貸して下さい。
>if ""=="%hoge%" echo hogeは空です
…のようなことをしたい訳なのですが、空の環境変数hogeの展開結果は「%hoge%」になってしまう様子。
>set hoge=ABC
>echo %hoge%
ABC
>set hoge=
>echo %hoge%
%hoge%
↑あれれ?
>echo %hoge%
%hoge%
になるということは、コマンドプロンプトに直接入力してる、のでしょうか?
IFなどの条件分岐はバッチファイルでしか使えないはずです。
バッチファイルであれば
if "" == "%hoge%" ( echo 空 ) else echo 空じゃない
で問題ないはずです。
回答ありがとうございます。
僕の質問文が舌足らずでしたか?
実際に僕の手元のWindows XPでは、「if ""=="%hoge%" echo hogeは空です」では問題があるのです。tokuya_nのお手元のWindows XP(のcmd.exe)ではWin9X(のcommand.com)と同じに振舞うのでしょうか?
…ところで「else」なんて使えるのかと思って「if /?」を試したら、「if [not] DEFINED 環境変数名」なんて構文を発見しました。
この構文なら気持ち良くコーディング出来そうです。
従って解決しました。僕が自力で解決したように見えるかも知れませんが、tokuya_nさんの回答があってこそ「if /?」を試したのです。
感謝致します。本当にありがとうございます。
※ifコマンド自体は、コマンドプロンプト直接入力でも使えますよ!?