
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 ping
ou timeout
para produzir um atraso de tempo.
timeout
não está disponível no Windows XP.timeout
dá-lhe uma contagem regressiva.
ping
solução
Para matar notepad
apó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
ping
s.
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
timeout
solução
Para matar notepad
após 60 segundos use o seguinte comando:
timeout /t 60 && taskkill /im notepad.exe
Notas:
timeout
não está disponível no Windows XP.timeout
está 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
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- tempo esgotado- Atrasar a execução por alguns segundos ou minutos, para uso em um arquivo em lote.
- pingar- Teste uma conexão de rede - se for bem-sucedido, o ping retornará o endereço IP.
- Como dormir 5 segundos no prompt de comando do Windows? (ou DOS)
Responder2
Tente usarAgendador de tarefas.
- Configure o log de eventos para que um evento seja gerado quando o programa desejado for iniciado.
- 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.