Eu tenho o arquivo BAT sendo executado em segundo plano no Windows, que dura cerca de dez minutos. Agora quero interrompê-lo enquanto estiver em execução, mas não consigo encontrar o nome na lista de processos no gerenciador de tarefas. Então, como posso abordar isso? Obrigado!
UPDATE1
Parece difícil parar um processo BAT em execução no backgroud.E eu decido tentar matar todos os processos envolvidos pelo arquivo BAT por nome, o que pode ser um exagero.É aceitável para mim, uma vez que a maioria dos processos no meu arquivo BAT não é usada com frequência, como ping, tracert, netstat etc. Se você tiver alguma solução melhor, por favor me avise.
UPDATE2
Árvore de processos BAT
ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);
no VC ++.Respostas:
Os processos geralmente são iniciados em uma árvore como a moda. Recomendaria iniciar o Microsoft / Sysinternals Process Explorer . Comece clicando na
Show Process Tree
opção (1), encontre o processo e clique com o botão direito do mouse e escolhaKill Process Tree
(2) Isso deve matar o arquivo original e tudo o que lançou.fonte
taskkill /F /T /IM cmd.exe
. O único problema é que todo arquivo BAT iniciará umcmd.exe
processo com PID diferente .Eu preciso descobrir qual é o meu alvo.Você pode modificar o arquivo em lotes para que ele use um arquivo de bloqueio para continuar operando, inserindo verificações entre os comandos quanto à existência do arquivo. Para interromper a execução do arquivo em lotes, basta excluir o arquivo de bloqueio.
Aqui está um arquivo em lote de demonstração:
Para eliminar violentamente os processos que podem estar em execução no momento, você pode criar um arquivo em lote 'kill' que conterá comandos de taskkill para todas as tarefas possivelmente iniciadas a partir do arquivo em lote:
fonte
tracert
por exemplo.Um BAT normalmente apenas inicia uma instância do CMD.exe. Dependendo do que o seu script faz, ele também iniciará outros processos.
fonte
Eu escrevi um aplicativo que pode ajudá-lo, pelo menos se o BAT estiver sendo executado em uma janela CMD. Você pode visualizar as janelas do aplicativo em execução e obter o PID do aplicativo, depois matá-lo com o meu aplicativo, também pode ver todos os processos que ele gerou e matá-los também. É um programa realmente simples, mas eficaz para esse tipo de coisa. Você também pode usá-lo para rastrear exatamente de onde o HD está executando o arquivo BAT, caso você ainda não saiba.
fonte
Como o arquivo em lotes é chamado?
Se for do Agendador de tarefas, você também poderá interrompê-lo. Se for de um serviço, você poderá interromper o serviço.
fonte
Encontrou esta discussão no quadro de mensagens:
http://www.gamedev.net/community/forums/topic.asp?topic_id=261694
Ele sugere o uso do ShellExecuteEx (ou CreateProcess) para que você possa obter um identificador do processo, que pode ser usado para interromper o processo.
fonte
Se você o abrir no prompt de comando, pressione Ctrl+ C. Aguarde alguns segundos e ele será encerrado.
fonte