Mate ou feche 100 janelas CMD abertas no squence

4

Estou fazendo uma operação que abrirá 100 janelas Do DOS em seqüência (uma após a outra terminar).

Cada janela levará aproximadamente 2 horas para concluir o processo, a próxima janela será iniciada e assim por diante.

Eu gostaria de fechá-lo depois que ele começar. Existe alguma maneira de automatizar o processo de fechamento das janelas?

ATUALIZAÇÃO: Estou executando um software que abre uma janela do DOS para executar uma operação. Ao abrir a janela do DOS, o software grava um arquivo em lote. Isso acontecerá cerca de 100 vezes porque configuro o software para executar 100 operações diferentes. Eu vou usar todos os 100 arquivos em lote depois. Eu preciso automatizar o fechamento das janelas do DOS. Eu realmente não preciso dessas janelas, eu só me importo com os arquivos em lote que estão sendo escritos. Espero que isso esclarece a questão.

    
por Julia_arch 07.08.2016 / 19:44

2 respostas

2

Se você estiver usando GOTO EOF no final dos scripts executados, basta substituí-lo por EXIT /B e isso deve funcionar para sua necessidade.

Exemplo de script

@ECHO ON 
SET RootDir=C:\Folder

FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%RootDir%\*.bat"') DO START "" "%%~A"
EXIT /B

EXIT

Quit the current batch script, quit the current subroutine or quit the command processor (CMD.EXE) optionally setting an errorlevel code.

Syntax

EXIT [/B] [exitCode]

Key

/B        When used in a batch script, this option will exit 
          only the script (or subroutine) but not CMD.EXE

exitCode

          Sets the %ERRORLEVEL% to a numeric number.
          If quitting CMD.EXE, set the process exit code no.

source

    
por 07.08.2016 / 21:28
2

Existem várias abordagens possíveis, incluindo soluções alternativas.

Você tem outras janelas de "prompt de comando" abertas que lhe interessam? Se não, abra um novo prompt de comando e mate todas as janelas de prompt de comando:

TASKKILL /fi "imagename eq cmd.exe"

Alternativamente, por que 100 janelas foram criadas? Como o comentário de Vinayak observou, isso pode não ser necessário. Considere fazer um arquivo em lotes que use o comando CALL várias vezes. por exemplo:

@Echo Off Call File1.bat Call File2.bat Call File3.bat

Se você estiver tentando executar tudo isso simultaneamente, em vez de sequencialmente, o comando start pode ser útil. Considere:

@Echo Off Start CMD /C File1.bat Start CMD /C File2.bat

Notas: * Talvez especialmente se você usar o comando START, é melhor se você tiver cuidado com o PATHs. Portanto, não execute apenas "File1.bat" se "File1.bat" não estiver em seu PATH ou em seu diretório atual. Sempre que estou criando uma nova janela, tenho o hábito de não confiar que inicio no diretório atual, acho que faço. Isso pode envolver o uso do comando CD com mais freqüência (talvez até com mais frequência do que o necessário, apenas para estar seguro). Ou, muitos comandos podem ser executados de outros diretórios se você especificar o caminho completo. por exemplo:

@Echo Off Start CMD /C %USERPROFILE%\mybats\File1.bat Start CMD /C %USERPROFILE%\mybats\File2.bat

Se você tiver um caractere "espaço" em seus nomes de pastas / diretórios, talvez seja necessário cercar o caminho inteiro entre aspas.

@Echo Off Echo My home directory is %USERPROFILE% Pause Start "" CMD /C "%USERPROFILE%\mybats\File1.bat" Start "" CMD /C "%USERPROFILE%\mybats\File2.bat"

  • Se você precisar usar aspas no seu comando START, tenha cuidado. O comando START surpreendeu muitas pessoas tratando o primeiro conjunto de aspas como caracteres que têm um significado especial: definir um título de janela. É por isso que os exemplos acima mostram um conjunto de aspas antes dos caminhos.
  • Estou escrevendo esta resposta com base na memória / conhecimento. Eu não testei isso quando escrevi esta resposta, principalmente porque eu não conseguia pensar em um teste muito útil que se aplicasse bem à sua tarefa, porque eu não estou entendendo completamente sua tarefa. No entanto, 100 arquivos de lote, vezes duas horas por peça, são 8 dias e 8 horas. Por isso, recomendo passar vários minutos testando sua abordagem (com alguns arquivos em lote simples / de teste) antes de iniciar seu evento durante a semana inteira.
  • As versões mais antigas do Windows algumas vezes tinham alguns limites engraçados, talvez especialmente ao usar recursos projetados para fornecer alguma compatibilidade com o código antigo do MS-DOS, que estava ainda mais cheio de limites engraçados. A Microsoft melhorou essa situação, corrigindo muitas peculiaridades relacionadas ao DOS com o passar do tempo. No entanto, eu questionaria se 100 janelas simultâneas poderiam quebrar alguma coisa, em pelo menos algumas versões do Windows. É aconselhável ter cuidado e não confiar nos resultados de procedimentos não testados. (Se você não tem resultados anteriores, o procedimento adequado é fazer uma tarefa menor que seja fácil de testar e certifique-se de testar completamente as coisas antes de confiar nos resultados.) Eu percebo que tais idéias podem parecer óbvias, e percebo que, na verdade. coisas de testes podem ser mais difíceis na prática do que a teoria, mas eu aponto isso porque tais procedimentos são freqüentemente tão importantes que valem a pena mencionar de qualquer maneira.

Boa sorte.

    
por 08.08.2016 / 04:47

Tags