Arquivos em lote: como deixar a janela do console aberta


105

Tenho dois arquivos em lote, um deles executa outro, ou seja,

  1. "Meu arquivo de lote"> 2. "Outro arquivo de lote"

Criei um atalho para o primeiro arquivo em lote e editei suas propriedades para chamá-lo da seguinte maneira.

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

O que eu quero fazer, eu quero que a janela do console seja aberta após o término da execução do arquivo em lote. Agora ele apenas fecha, tentou brincar com as sinalizações cmd, sem resultado.

Plataforma: Windows7


ATUALIZAÇÃO 1

Modificada a estrutura, o exemplo simples como este não funciona tão bem, apenas um arquivo de lote, ou seja, não há o 2. "Outro arquivo de lote" O único arquivo de lote contém smth como este

start /B /LOW /WAIT make package
cmd /K

ATUALIZAÇÃO 2

O mesmo atalho que é chamado a partir do Explorer não fecha a janela do console. Mas a janela do console fecha quando o atalho é invocado a partir do item fixado na barra de tarefas

Alguma ideia de como manter a janela do console aberta?


Presumo que você queira My Batch Fileficar por aqui?
Marc B

"Quente para deixar a janela do console de um arquivo em lote aberta" é perguntado e respondido de forma mais clara aqui: superuser.com/questions/175515/…
oberlies

Respostas:


126

Se isso for realmente tudo o que o arquivo em lote está fazendo, remova o cmd /Ke adicione PAUSE.

start /B /LOW /WAIT make package
PAUSE

Em seguida, basta apontar o atalho para "My Batch File.bat"... sem necessidade de executá-lo CMD /K.

ATUALIZAR

Ah, algumas informações novas ... você está tentando fazer isso a partir de um atalho fixado na barra de tarefas.

Achei isso, Adicionar arquivos em lote à barra de tarefas do Windows 7, como o Vista / XP Quick Launch , com a parte relevante abaixo.

  1. Primeiro, fixe um atalho para CMD.EXEa barra de tarefas clicando no botão Iniciar, digite "cmd" na caixa de pesquisa, clique com o botão direito no resultado e escolha "Fixar na Barra de Tarefas".
  2. Clique com o botão direito no atalho da barra de tarefas.
  3. Você verá uma lista que inclui " Prompt de comando " e " Desafixar este programa da barra de tarefas ".
  4. Clique com o botão direito do mouse no ícone CMD.EXEe selecione Properties.
  5. Na caixa de Destino, vá até o final de "%SystemRoot%\system32\cmd.exe"e digite " /C "o caminho e o nome do arquivo em lote.

Para seus objetivos, você pode:

  1. Use /Ce coloque um PAUSEno final do arquivo em lote.

    OU

  2. Altere a linha de comando para usar /Ke remover PAUSEdo seu arquivo em lote.

Já fiz isso, basicamente minha dúvida não é como chamar outro arquivo batch ...
deimus 6/12/12

Em seguida, precisamos ver o conteúdo de ambos os arquivos em lote.
aphoria

Por favor, veja a pergunta
atualizada

O mesmo problema, substituindo CMD / K não funciona. Por que a janela consolada não fecha se o atalho é invocado no Explorer?
deimus

13

Aqui:

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Dê uma olhada no que você está fazendo:

  1. (cmd / K) Inicie uma NOVA instância de cmd.
  2. (& pause) Pause a instância CURRENT cmd.

Como resolver isso? bem, usando a sintaxe correta, encerrando o argumento para a nova instância CMD:

cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"

6

Acabei de escrever a última linha como Pause e funcionou bem com .bat e .cmd. Ele exibirá a mensagem também como 'Pressione qualquer tecla para continuar'.


Essa é a resposta correta! Deve ser o mais votado.
Patrick Hillert

5

Na última linha do arquivo em lote que você deseja manter aberto, coloque um

pause >nul


Parece que está fechando mais cedo, talvez um erro no script. Tente abrir um prompt de cmd e executá-lo a partir daí, então você pode ver se há algum erro.
Bali C

3

Para deixar a janela do console aberta, você só precisa adicionar à última linha de comando no arquivo em lote:

' & pause'

2

Você pode simplesmente colocar um pausecomando na última linha do seu arquivo em lote:

@echo off
echo Hey, I'm just doing some work for you.
pause

Fornecerá algo como isto como saída:

Ei, estou apenas fazendo um trabalho para você.

Pressione qualquer tecla para continuar ...

Nota: Usar o @echo impede a saída do comando antes que a saída seja impressa.


0
rem Just use "pause" at the end of the batch file.
...
......
.......
pause

-1

colocar no final irá reabrir seu console

start cmd 

Isso não resolve o problema, o usuário deseja manter a janela aberta, não reabrir uma antiga.
Adam

-5

Eu apenas pressiono Enter e digito Pause e funciona 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.