IF "%~1" == "" GOTO EXIT
を上に持ってくる方がよくない?

batは普通のプログラミング言語と違って、
変数展開した後に構文解析するから慣れるまでは
echo on で確認した方がいいよ。