【続々々】ディレクトリかどうかの判断
昨日の記事に対し、
>私は、dir "対象" /a:d してみて errorlevel を見ます。 NUL に頼るより確実では?
というコメント*1を頂いた。
DOSの時代から、ディレクトリのチェックは\NULを使ってやるものという先入観を持っていた。
いまや、dirコマンドにも/adオプションができ、そっちが正攻法かなという気がしてきました。ということで前回のコメントで頂いた、\NULをtypeしてみるというのは中途半端。
ただ、if existで一気にチェックできるコンパクトさは捨てがたい。ということで、もう少しあがいてみました。
if exist FILE | 真 | if exist DIR | 真 | if exist NONE | 偽 |
if exist FILE\ | 偽 | if exist DIR\ | 真 | if exist NONE\ | 偽 |
if exist FILE\. | 真 | if exist DIR\. | 真 | if exist NONE\. | 偽 |
if exist FILE\\ | 偽 | if exist DIR\\ | 真 | if exist NONE\\ | 偽 |
if exist FILE\.\ | 偽 | if exist DIR\.\ | 真 | if exist NONE\.\ | 偽 |
ここでFILEは普通のファイル、DIRはディレクトリ、NONEはファイルとして存在しない名前。
これを見ると、
if exist %%X if not exist %%X\ echo "普通のファイル"
でいけそうである。
でも、こんなに簡単でいいのか何か見落としは無いのか気になる。引き続き調べてみることにする。
*1:オリジナルサイトでのコメントの話なのでこのサイトではコメントは付いてない