Do prompt do Cmd - Como cronometrar a saída de um programa?

Do prompt do Cmd - Como cronometrar a saída de um programa?

Quero descobrir uma maneira de usar o prompt de comando para fechar um programa em, digamos... 60 segundos. Semelhante ao desligamento cronometrado do computador (shutdown /s /t ) e ao taskill.

Alguma ideia? Isso é possível?

Responder1

Como posso fechar um programa em, digamos... 60 segundos?

Você pode usar pingou timeoutpara produzir um atraso de tempo.

  • timeoutnão está disponível no Windows XP.
  • timeoutdá-lhe uma contagem regressiva.

pingsolução

Para matar notepadapós 60 segundos use o seguinte comando:

ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe

Observação:

  • Você precisa de 61 pings, pois há um atraso de 1s entre pings.

Exemplo:

F:\test>time /t && ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe && time /t
17:56
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 8084.
17:57

Um atraso também pode ser produzido pelo comando PING com endereço de loopback, há um atraso de 1 segundo entre cada ping consecutivo. Nos testes, o PING consome menos tempo do processador que o Sleep.exe ou o Timeout.exe, o que permite que outros processos sejam executados em segundo plano. O comando PING só pode ser interrompido com Ctrl-C. Fonte: Clay Calvert (usenet 2001.)

por exemplo, para um atraso de 40 segundos:

PING -n 41 127.0.0.1>nul

Fontetempo esgotado


timeoutsolução

Para matar notepadapós 60 segundos use o seguinte comando:

 timeout /t 60 && taskkill /im notepad.exe

Notas:

  • timeoutnão está disponível no Windows XP.
  • timeoutestá mal implementado. Se você fizer um “timeout 1”, ele aguardará até o “próximo segundo”, o que pode ocorrer em 0,1 segundos. Tente fazer o “timeout 1” algumas vezes e observe a diferença no atraso. Por 5 segundos ou mais, pode não ser grande coisa, mas por um atraso de 1 segundo funciona mal.

Exemplo:

F:\test>time /t && timeout /t 60 && taskkill /im notepad.exe && time /t
18:07

Waiting for  0 seconds, press a key to continue ...
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 5412.
18:08

Leitura adicional

Responder2

Tente usarAgendador de tarefas.

  1. Configure o log de eventos para que um evento seja gerado quando o programa desejado for iniciado.
  2. Configure uma tarefa agendada para ser executada quando o evento específico do número 1 for registrado. Na tarefa agendada, um atraso pode ser definido (60 segundos no seu caso) e quaisquer comandos/scripts podem ser iniciados.

Responder3

Experimente meu exemplo:

choice /t 5 /d a /c ab /n >nul & taskkill /im URprocess.exe

Explicação: "choice" espera 5 segundos e sai, então taskkill fecha "URprocess"

Responder4

Eu uso o scriptrunner.exe fornecido com o windows 10. Tive que procurar o meu, não estava no caminho. Você pode encontrar documentação emhttps://ss64.com/nt/scriptrunner.html

Costumo converter vários e-books em epub, mas a conversão geralmente fica no meio do caminho. Então fiz um lote com o seguinte conteúdo.

@echo off
for /F "delims=" %%a in (files.txt) do (
  if not exist "%%a.epub" ScriptRunner.exe -appvscript "c:\Program Files (x86)\calibre2\ebook-convert.exe" "%%a" "%%a.epub" -appvscriptrunnerparameters -timeout=60
  if exist "%%a.epub" del "%%a"
)

Files.txt contém todos os arquivos com caminhos que precisam ser convertidos. Eu uso o ebook-convert.exe do calibre para fazer a conversão. O argumento -timeout=60 é o tempo em segundos (aqui 60) após o qual a execução é interrompida, se a conversão estiver pronta antes da próxima linha ser executada.

Tudo isso funciona bem.

informação relacionada