Tente usar isso no seu arquivo de lote:
set arg0=%0
if [%arg0:~2,1%]==[:] pause
Isso verifica se o terceiro caractere do 0º argumento (basicamente, o nome do arquivo em lote) é dois pontos ou não.
Normalmente, quando você arrasta e solta algo em um arquivo de lote, ele é chamado de: "Drive:\path\to\Batch File.bat" Arg1 Arg2 ...
No entanto, quando executamos um arquivo de lote do Prompt de Comando, geralmente não o chamamos assim, com um caminho absoluto entre aspas. Assim, podemos explorar essa diferença e executar um pause
somente quando os dois-pontos existirem como o terceiro caractere, o que significa que o arquivo em lote foi executado por meio de arrastar e soltar. Obviamente, se você usar um caminho absoluto entre aspas para executar o arquivo em lote a partir do prompt de comando, ele também será pause
.