Com base no comentário que você deu, seu código é realmente ineficiente. Você pode remover as últimas três linhas e manter:
IF "%~1"=="" EXIT /B
Isto irá verificar apenas o primeiro parâmetro. Ele sairá se o lote for chamado sem parâmetros ou continuará se o lote tiver um ou mais parâmetros