リダイレクトの失敗検知

出力リダイレクトの「> XXX」で、XXX がディレクトリだったり、リードオンリーファイルだったりするとリダイレクトが失敗する。また、入力リダイレクト「< XXX」で、XXX がディレクトリだったり、存在しないとリダイレクトが失敗する。
ただし、これらの場合も、ERRORLEVEL はセットされない。リダイレクトの失敗を検知するためには、

cmd /c "echo > XXX" 2>NUL || echo リダイレクト失敗
cmd /c "echo < XXX" 2>NUL >NUL || echo リダイレクト失敗

のように、cmd を起動することで、失敗を ERRORLEVEL に反映できる。

もちろん、if exist や dir /ad や %~aF などの手段によって属性などを調べることで、リダイレクトの失敗条件を別の手段でチェックすることも出来る。