Em vez de usar PAUSE (prefiro CHOICE ou TIMEOUT para usar PAUSE, quando necessário), você pode usar a solução aqui: 886848 / como-fazer-windows-batch-file-pause-quando-clicou duas vezes .
Dessa forma, se você clicar em um arquivo de lote ou link (atalho) de dentro do Windows Explorer, poderá fazer com que o programa de arquivos em lote pause antes de sair para exibir a saída do programa e quaisquer mensagens de erro.
Usando o comando ESCOLHA, você pode programar a capacidade do usuário de selecionar uma variedade de ações a serem executadas, e o uso de TIMEOUT permite que a janela seja fechada após um atraso de tempo (autônoma). Se você executar o arquivo em lotes de dentro de uma janela de prompt de comando, essas pausas podem ser irritantes.
A solução vinculada permitirá que você decida se deseja pular as pausas se o arquivo em lote foi executado a partir de uma janela do prompt de comando.
Você pode ler mais no link fornecido, mas o básico é que ele usa a variável de ambiente:
%cmdcmdline%
para determinar se o arquivo de lote foi executado a partir de uma janela de comando ou não.
Então, você usa assim:
No ponto em que o arquivo de lote será encerrado, você adiciona um código como este:
echo %cmdcmdline:"=-% | find /i "cmd /c --%~dpf0%-"
if %errorlevel% NEQ 0 goto :EOF
pause
goto :EOF
rem if %errorlevel% EQU 0 batch-file: %~dpf0 was executed from Windows Explorer, ...
rem if %errorlevel% NEQ 0 batch-file: %~dpf0 was executed from within a Command Prompt