Eu quero que o programa inicie depois de dez minutos somente se nenhuma tecla for pressionada.
Use o seguinte arquivo em lotes:
@echo off
call :controlTimeout 600
if errorlevel 1 (
echo A key was pressed
) else (
echo Time Up
start "" "C:\Program Files\program.exe"
)
exit /b
:controlTimeout
setlocal
start "" /belownormal /b cmd /q /d /c "timeout.exe %~1 /nobreak > nul"
timeout.exe %~1 & tasklist | find "timeout" >nul
if errorlevel 1 ( set "exitCode=0" ) else (
set "exitCode=1"
taskkill /f /im timeout.exe 2>nul >nul
)
endlocal & exit /b %exitCode%
Crédito: o arquivo de lote acima é baseado na resposta do StackOverflow script em lote do Windows: captura a reação do usuário ao comando "timeout" por MC ND
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- Errorlevel - Quase todos os aplicativos e utilitários definem um código de saída quando concluem / terminam.
- tasklist - TaskList exibe todos os aplicativos e serviços em execução com seu ID de processo (PID). Ele pode ser executado em um local ou em um computador remoto.
- tempo limite - Atrase a execução por alguns segundos ou minutos, para uso em um arquivo de lote.