隠し環境変数の謎
昨日書いた %" "% のコメントに機能に絡んで、" " に囲まれた環境変数名が使えないものかやってみた。が、
set "AA"=123 環境変数 AA が定義されていません
となる。つまり、
set AA
と同じ結果になる。ついでに、
set ""=123
をやってみたところ、set と同じように全環境変数が表示される。しかし、それだけではない。
=C:=C:\temp =ExitCode=00000000
というのも表示される。つまり、=C: や =ExitCode という環境変数が存在するわけだ。念のため、
echo %=C:% %=ExitCode%
とやってみたが、ちゃんと表示される。意味は名前から想像される通りのようだ。カレントドライブを Dドライブにすると、=D:という環境変数が増える。つまり、ドライブごとのカレントディレクトリをあらわしているものと思われる。cdするとちゃんと値が変わる。=ExitCode と ERRORLEVELの違いだが、ERRORLEVELがビルトインコマンドでも変化するのに対して、=ExitCode は、外部コマンド実行のときにだけ値が変化するようだ。
せっかく見つけた隠し機能だが、これといった使い道が思い浮かばないのが難点。