【続】ディレクトリかどうかの判断

if exist %A%\NUL を使ったディレクトリ判断について、
昨日、空白を含んでいるとだめだと書いたが、それは正しくないようだ。

if exist "C:\Program Files\NUL"
if exist C:\Program Files\NUL構文不正
if exist "C:\PROGRA~1\NUL"
if exist C:\PROGRA~1\NUL
if exist "C:\WINDOWS\NUL"
if exist C:\WINDOWS\NUL
if exist "C:\WINDOWS\desktop.ini"

偽となっているものはすべて本当は真のはず。
つまり、" " で囲まれていると、NULが存在しないと間違った判断をしてしまう。
NUL,CONのような特殊名でないファイルは " " で囲んでも正しく判断される
空白を含んでいると " " で囲まざるを得ないため結果的には間違った判断となる。

つまり、NUL,CONのようなデバイスファイルの存在チェック時には " " で囲んではいけない。
ってどうもバグのように思えるので、いずれもう少し調べてみたい。

対処法は、昨日書いたものに加えて、コメント*1でいただいた次のものでもOK。
type %A%\NUL >NUL 2>NUL & if %ERRORLEVEL%==0 echo ディレクト
type でなく copy 等でもいい。とにかく、if exist だけが特殊なようだ。

*1:オリジナルサイトでのコメントの話なのでこのサイトではコメントは付いてない