bat の if 文で空文字チェックしたいとき
if %1 == "" echo ERROR
としたら %1 が空だと
if == "" echo ERROR
になって構文エラー
クオートをつけて
if "%1" == "" echo ERROR
にすると %1 が空のときにうまく動くけど 半角スペースを含む場合に引数に "" がすでにあるので
if ""a b"" == "" echo ERROR
になって構文エラー
展開時にクオート外したいと思って調べたら ~ を使えばはずせるというものでした
if "%~1" == "" echo ERROR
にすると
if "a b" == "" echo ERROR
となってうまくいきます