Pausa no arquivo em lotes do MS-DOS com a tecla Enter

146

É possível no arquivo em lotes do MS-DOS pausar o script e aguardar que o usuário pressione a tecla Enter?

Desejo fazer isso dentro de um loop for. Após cada iteração, desejo que o script seja pausado e aguarde o usuário pressionar 'Enter'

dr_rk
fonte

Respostas:

247

Há um pausecomando que faz exatamente isso, embora não seja especificamente a tecla Enter.

Se você realmente deseja esperar apenas a tecla Enter, poderá usar o setcomando para solicitar entrada do usuário com uma variável dummy, algo como:

set /p DUMMY=Hit ENTER to continue...

abjuk
fonte
17
Você não precisa especificar um nome de variável: set /p=Hit ENTER to continue...ou simplesmente set /p=se não precisar de um prompt.
dbenham
2
Por alguma razão, meu aplicativo está passando rapidamente pela lógica de pausa. Muito estranho.
Ouockk # 9/13
11
Parece um pouco estranho ver a palavra "app" está sendo usado neste contexto (um arquivo de lote)
Adrian Grigore
Isto não funciona para mim. funciona apenas a partir do segundo lançamento quando 'set' funcionou / salvo no ambiente.
ses
13

pausecomando é o que você está procurando. Se você estiver procurando APENAS o caso quando enter for pressionado, poderá abusar do runascomando:

runas /user:# "" >nul 2>&1

a tela ficará congelada até que a tecla enter seja pressionada. O que eu mais gosto set/p=é que, se você pressionar outros botões que não a tecla enter, eles não serão exibidos.

npocmaka
fonte
4

Você pode fazer isso com o pausecomando, exemplo:

dir
pause
echo Now about to end...
pause
Vic_HT
fonte
1
pausede fato, é a única resposta válida para MS-DOS(todas as outras respostas estão funcionando cmdapenas). Portanto, sua resposta é realmente a única completamente correta para esta pergunta especial (embora já tenha sido sugerida há mais de 7 anos)
Stephan
3

Dependendo do sistema operacional em uso, se você for flexível, CHOICEpoderá ser usado para aguardar praticamente qualquer tecla EXCEPTdigitada

Se você está realmente se referindo ao que a Microsoft insiste em chamar de "Prompt de Comando", que é simplesmente um emulador de MS-DOS, talvez TIMEOUTseja adequado ao seu objetivo ( timeout /t -1aguarda qualquer tecla, não apenas ENTER) e, CHOICEé claro, está disponível novamente nas edições recentes do WIN.

E um aviso SET /P- enquanto set /p DUMMY=Hit ENTER to continue...funcionará,

set "dummy="
set /p DUMMY=Hit ENTER to continue...
if defined dummy (echo not just ENTER was pressed) else (echo just ENTER was pressed)

detectará se apenas ENTER ou algo mais, terminando em ENTER, foi digitado.

Magoo
fonte