Que comando posso colocar no final de um arquivo em lotes para impedir o fechamento automático do console após a execução do arquivo?
Que comando posso colocar no final de um arquivo em lotes para impedir o fechamento automático do console após a execução do arquivo?
Respostas:
Nos arquivos em lotes do Windows / DOS:
pause
Isso imprime uma boa "Press any key to continue . . . "
mensagem
Ou, se você não quiser a "Press any key to continue . . ."
mensagem, faça o seguinte:
pause >nul
Depende da pergunta exata!
Normalmente pause
faz o trabalho em um arquivo .bat .
Se você deseja que o cmd.exe não feche para poder continuar digitando, use o cmd /k
comando no final do arquivo.
cmd /k
antes do seu comando. & cmd /k
não vai funcionar.
Se você deseja que o cmd.exe não feche e possa continuar digitando, use
cmd /k
Apenas senti a necessidade de esclarecer o que /k
faz (no site do Windows):
/k
: Executa o comando especificado por string e continua.
Portanto, cmd /k
sem o comando de acompanhamento no final do arquivo bat, apenas a cmd.exe
janela será aberta para uso posterior.
Por outro lado, pause
no final de um arquivo em lotes, basta pausar o processo e terminar cmd.exe
com o primeiro pressionamento do botão
A maneira abaixo de ter comandos em um arquivo em lotes abrirá novas janelas de prompt de comando e as novas janelas não sairão automaticamente.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Se você estiver usando o Maven e desejar pular a digitação e impedir que o console se feche para ver o resultado, você precisará usar o CALL
comando no script, além de apenas a 'instalação limpa do mvn'.
Assim fechará o console
ECHO This is the wrong exemple
mvn clean install
pause
Assim o console ficará aberto
ECHO This is the right exemple
CALL mvn clean install
pause
Se você não usar o CALL
comando, nenhum dos exemplos passados funcionará.
call <myCommand>
resolvido este problema: Meu fechamento imediato Stoped após a primeira execução
Adicione cmd.exe
como uma nova linha abaixo do código que você deseja executar:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
python script.py %1 && cmd
minha maneira é escrever um lote real (dizendo "foo.bat") para concluir o trabalho; então crie outro "start.bat":
@echo off
cmd /k foo.bat
Acho que isso é extremamente útil quando eu configuro variáveis de ambiente únicas.
cmd /k
(sem nenhum comando) no final do foo.bat
arquivo e executá-lo. Você não precisa de um start.bat
arquivo separado .
Ligue cmd
no final do arquivo em lotes.
Possibilidade 1: Basta criar 2 arquivos .bat e escrever no primeiro:
start <filename> // name of 2nd batch file
exit
O arquivo em lote 2 é o arquivo que não será fechado no final. Então agora, quando você abrir o lote nº 1, ele iniciará o segundo e se esconderá. Quando o 2º terminar, ele não fechará completamente (desde que você não coloque a saída no final)
Possibilidade 2: arquivo de lote 1:
call <filename>
cls
echo End of file
pause
<any code you want>
Quando o 2º arquivo terminar, ele continuará com o arquivo 1 novamente e exibirá o restante. Com isso, você pode até fazer manipuladores de erros. Se o nr.1 travar, ele entra no nr.2 e o exibe
Esse pequeno truque solicita que o usuário insira uma chave e a armazene na variável% exitkey% (essa variável pode ser chamada como você quiser).
set /p exitkey= "Press any key to continue..."
NB: o espaço após o '=' é muito importante
Eu sei que estou atrasado, mas meu caminho preferido é:
:programend
pause>nul
GOTO programend
Dessa forma, o usuário não pode sair usando enter.
Há duas maneiras de fazer isso depende do caso de uso
1) Se você deseja que o prompt do cmd do Windows permaneça aberto para poder ver o resultado da execução e fechá-lo depois; usar
pause
2) se você deseja que o prompt do cmd do Windows permaneça aberto e permita que você execute algumas palavras-chave de comando; usar
cmd
Fácil, adicione cmd à sua última linha de bastão, MAS! se você redefinir ou limpar o caminho do sistema, deverá iniciar o cmd com o caminho completo, como:
%windir%\system32\cmd.exe
Por exemplo, eu tenho um arquivo bat para redefinir o jdk para a versão antiga como esta:
PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe
desde que redefini o caminho do sistema, tenho que executar o cmd com o caminho completo ou o sistema não consegue encontrar o cmd.exe, ele falha ao executar o cmd e fecha a janela e você não vê o erro msg .