バッチファイルにファイルをドラッグしてそのパスを引数に処理をするとif文で落ちる

 
文書番号:20657




バッチファイルにファイルやフォルダーをドラッグして実行する際、 引数として入力されるファイル名などに半角スペースがあるとif文でその引数を判断するところで落ちるようです。

引数が指定されているかどうかを判断するための処理です。


if "%1" EQU "" (  ←ここで落ちる

  echo 引数が指定されていません。
  pause
  exit

)

「%1」の場合、ドラッグしたファイルのフルパスのどこかに半角スペースもしくは全角スペースがあるとパス全体を""で括られます。

この""がよくないのですが、「%~1」と指定するとスペースを含むパスでも""なしで取得することができます。

if "%~1" EQU "" (

  echo 引数が指定されていません。
  pause
  exit

)