最近、Win10の長いバッチの調子がおかしいと思ったら、最近の環境変数は値が入っていないと、空の文字列でなく、変数名をそのまま返してしまう。
変数testが未定義の場合、昔は、"%test%" と参照すると、"" だったのに、今は、"%test%" がそのまま返って来る。
だから、未定義かどうかは if defined test goto... とか、if not defined test goto... で分岐してやらねばならなくなった。
いつからこうなった?
setlocal enabledelayedexpansion(環境変数の遅延展開)の問題か、とも思ったが違うようだ。
未だに何台も使っている、Windows7で試したところ、何と、今の仕様だった。つまり、未定義変数の名前をそのまま返して来る。
と言うことは、未定義変数が空文字列になったのは、XPか、2000か?、それとも、98か? はたまた 5.0A あるいは 3.3D か?
以下は、どれも、「値が代入されていない変数は空だから、クォーテーションで囲むとかしろ」、と言うジジイの記事。
ちなみにWin10の発売は、2015年、Win7は、2009年。
〔2017年の記事〕
blog.livedoor.jp
〔2015年の記事〕
blog.livedoor.jp
〔2000年の記事〕
atmarkit.itmedia.co.jp