Как запустить программу через 10 минут, если не нажата клавиша?

start "" "C:Program Filesprogram.exe"

  • Я хочу, чтобы программа запускалась через десять минут только при отсутствии нажатых клавиш.

  • Я хочу, чтобы программа не запускалась, если какая-либо клавиша нажата в течение десяти минут.

какие команды я должен использовать в своем .bat файл?

13
задан DavidPostill
23.02.2023 14:27 Количество просмотров материала 2954
Распечатать страницу

2 ответа

Я хочу, чтобы программа запускалась через десять минут только при отсутствии нажатых клавиш.

использовать следующий пакетный файл:

@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%

кредит: вышеуказанный пакетный файл основан на ответе StackOverflow пакетный сценарий windows: поймать реакцию пользователя на команду "timeout" by MC ND


Читать Далее

  • индекс A-Z командной строки Windows CMD - отличная ссылка все окна УМК линия, связанная.
  • ошибки - почти все приложения и утилиты установят код выхода, когда они завершат / завершат работу.
  • tasklist - TaskList отображает все запущенные приложения и службы с их идентификатором процесса (PID) это можно запустить на локальном или удаленном компьютере.
  • timeout - задержка выполнения на несколько секунд или минут для использования в пакете папка.
5
отвечен DavidPostill 2023-02-24 22:15

Если вам не нужен визуальный обратный отсчет, то есть простое решение с помощью TIMEOUT, который использует <backspace> (0x08) символ, чтобы расположить номер обратного отсчета, который отображается каждую секунду.

похоже, что число находится в середине строки, но на самом деле вывод имеет последний 0 в качестве последнего символа outptut, либо с пробелом, либо с пробелом. Если пользователь нажимает клавишу, то тайм-аут прерывается и окончательный 0 никогда не выводится.

вы может передать выходные данные в findstr, чтобы проверить, был ли 0 последним выходным числом.

timeout 600 | findstr "[^0-9]0$" >nul && start "" "C:\Program Files\program.exe"

Если вы получаете порт Windows tee, то вы можете получить полу-функционирующий визуальный обратный отсчет, за исключением числа ошибочно появляются в конце сообщения вместо середины.

timeout 600 | tee countdown.txt
findstr "[^0-9]0$" countdown.txt >nul && start "" "C:\Program Files\program.exe"
del countdown.txt
2
отвечен dbenham 2023-02-25 00:32

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх