Mantenha o CMD aberto após a execução do arquivo BAT


169

Eu tenho um arquivo bat como este:

ipconfig

Isso imprimirá as informações de IP na tela, mas antes que o usuário possa ler essas informações, o CMD se fechará.

Acredito que o CMD assume que o script foi finalizado e, portanto, é fechado.

Como mantenho o CMD aberto após a conclusão do script?



4
@RobKielty é a mesma pergunta tudo bem - mas aqui temos uma nova resposta (o que é melhor IMHO)
alfasin


@alfasin Isso não é o mesmo que a resposta de Rutger Nijlunsing?
precisa

@RobKielty Não, minha resposta não é a mesma que não usa, o pauseque é uma boa solução alternativa (e foi por isso que votei nessa resposta), mas não uma que realmente resolva o problema porque depois que o usuário bate Enterou Spacea janela se fecha. ..
alfasin

Respostas:


163

Dependendo de como você está executando o comando, você pode colocar /kdepois cmdpara manter a janela aberta.

cmd /k my_script.bat

Simplesmente adicionar cmd /kno final do seu arquivo em lotes também funcionará. Os nossos agradecimentos a Luigi D'Amico, que postou sobre isso nos comentários abaixo.


14
Depois de todos os seus scripts no seu arquivo bat - put -> cmd / k
Luigi D'Amico

3
Lembre-se de que, se o seu programa contiver erros sintáticos, a janela ainda fechará se você o executou com um clique duplo e cmd /kno final.
Tobias Feil

Isso não explica o fechamento das janelas do cmd se o usuário clicar duas vezes no arquivo.
K - A toxicidade no SO está crescendo.

238

Coloque pauseno final do seu arquivo .BAT.


7
Isso é exatamente o que eu estava procurando, porque estou executando o arquivo bat na inicialização, não através de um comando CMD. +1
Hawkeye

3
Se você ainda deseja interagir com o arquivo bat após sua execução, substitua PAUSE por apenas cmd / k - depois que seus scripts forem executados, você poderá executar comandos manuais posteriormente no mesmo contexto
Luigi D'Amico

Eu não suporto ver que este não era o comentário "solução" para esta pergunta
Newhouse

57

Basta adicionar @pauseno final.

Exemplo:

@echo off
ipconfig
@pause

Ou você também pode usar:

cmd /k ipconfig

5
o que o símbolo @ faz? Existe uma diferença entre @pause e pause?
Demonicdaron

3
@demonicdaron Resposta que explica o símbolo @: stackoverflow.com/a/21077142/2258
Richard Morgan #

Mas, neste caso, não deve fazer nenhuma diferença.
Florian Leitgeb

A diferença entre @pausee pausepode ser vista visualmente nesta resposta: stackoverflow.com/questions/17957076#60053224
ZygD

7

Adicionar pause(Windows 7) ao final não funcionou para mim,
mas adicionar o cmd /kcomando na frente do meu comando funcionou.

Exemplo:

cmd /k gradlew cleanEclipse

7

Quando o arquivo .bat é iniciado, não a partir da linha de comando (por exemplo, clique duas vezes).

echo The echoed text
@pause

at_pause

echo The echoed text
pause

pausa

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

e_pausa


3

start cmd /kfez a mágica para mim. Na verdade, eu o usei para preparar o aplicativo cordova phonegap, ele executa o comando, mostra o resultado e aguarda o usuário fechá-lo. Abaixo está o exemplo simples

start cmd /k echo Hello, World!

O que eu usei no meu caso

start cmd /k cordova prepare

Atualizar

Você pode até ter um título para isso usando

start "My Title" echo Hello, World!


1

Se você estiver iniciando o script na linha de comando, adicione exit /bpara manter o CMD aberto


Praticamente não resolve a questão, pois modificar ipconfige outros arquivos em lotes internos é uma péssima idéia .
robinCTS

1

No Windows, adicione '& Pause' ao final do seu comando no arquivo.


1

Eu também estava confuso sobre o motivo pelo qual estamos adicionando um cmdno início e estava pensando se teria que abrir o prompt de comando primeiro. O que você precisa fazer é digitar o comando completo junto com cmd /k. Por exemplo, suponha que o nome do seu arquivo em lote seja "my_command.bat", que executa o comando, javac my_code.javae o código no arquivo em lote deve ser:

cmd /k javac my_code.java

Portanto, basicamente, não há necessidade de abrir o prompt de comando na pasta atual e digite o comando acima, mas você pode salvar esse código diretamente no seu arquivo em lotes e executá-lo diretamente.


0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

o segundo comando faz com que a janela do cmd não seja fechada. O importante é que você ainda possa inserir um novo comando


0

Como nota lateral, isso também funciona ao executar um comando diretamente da barra de pesquisa no Windows.

por exemplo, a execução ipconfigdireta fechará diretamente a janela do cmd após a saída do comando.

insira a descrição da imagem aqui

Usar o cmd \k <command>will - que era o que eu estava tentando fazer quando encontrei esta resposta.

insira a descrição da imagem aqui

Ele tem a vantagem adicional de sempre reconhecer o comando que você está tentando executar. Por exemplo, correr a echo hello worldpartir da barra de pesquisa não funcionará porque não é um comando, no entanto, cmd \k echo hello worldfunciona muito bem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.