Как установить тайм-аут для процесса под Windows 7? - программирование
Подтвердить что ты не робот

Как установить тайм-аут для процесса под Windows 7?

Я хотел бы запустить программу с пакетным файлом Windows. Но программа должна остановиться после определенного значения тайм-аута. Например: запустите программу 60 секунд и остановите ее через 60 секунд.

В Linux есть эта хорошая команда timeout, чтобы делать то, что я хочу. Windows также имеет команду timeout, но ее просто приостанавливает команду, чтобы отложить ее выполнение. Есть ли что-то еще в Windows для этого?

Настройка: Windows 7, 64 бит, Professional

4b9b3361

Ответ 1

start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f

Ответ 2

Бали С дал краткий и точный ответ. Мне нужно было что-то более функциональное и многоразовое. Основано на примере Бали С. Я придумал это. Если кому-то понадобится то же, что и я.

your.bat

REM...

CALL STARTwaitKILL..bat /relative/path/your_program.exe

REM...

STARTwaitKILL.BAT

@ECHO OFF 
IF[%1]==[] GOTO EOF
IF NOT EXIST %1 GOTO EOF

REM SET PRIORITY=/NORMAL
REM ADJUST PRIORITY, BELOWNORMAL LETS BATCH FILE RUN MORE SMOOTHLY
REM WITH A PROGRAM THAT CONSUMES MORE CPU. SEE ABOUT MAXWAIT BELLOW
SET PRIORITY=/BELOWNORMAL
REM SET PRIORITY=/LOW
REM 0 NORMAL WINDOW :: 1 NO WINDOW :: 2 MINIMIZED WINDOW
SET /A HIDDEN=1
REM MAXWAIT HERE IS MORE LIKE MINIMUM WAIT IN WINDOWS.
SET MAXWAIT=10
SET WAITCOUNT=0

SET ARGS=/I %PRIORITY%
IF %HIDDEN% EQU 1 SET ARGS=%ARGS% /B
IF %HIDDEN% EQU 2 SET ARGS=%ARGS% /MIN

START %ARGS% %1

:WAIT
IF %WAITCOUNT% GEQ %MAXWAIT% GOTO KILL_IT

TIMEOUT /T 1 > NUL
SET /A WAITCOUNT+=1
FOR /F "delims=" %%a IN ('TASKLIST ^| FIND /C "%~nx1"') DO IF %%a EQU 0 GOTO RUN_DONE
GOTO WAIT

:KILL_IT
TASKKILL /IM %~nx1 /F > NUL
:RUN_DONE

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

Ответ 3

Не существует какой-либо команды в Windows для задержки приложения или установки тайм-аута для приложения

Время ожидания в Windows - это задержка выполнения процесса CMD/Batfile, ничего более полезного.

Вы можете использовать внешние инструменты для этого, я не помню названия сейчас, так много подпольного программного обеспечения, извините, но я помню, что в официальном форуме autoit существует аналогичный инструмент командной строки для запуска приложения, устанавливающего таймаут, и, возможно, в инструменте NIRCMD или ps2exec, проверьте их файлы справки или кто-то из наборов WAIK.

Это единственное, что вы можете сделать:

@Echo OFF

:: First launch the app in background mode, because some applications stops the execution of CMD.
Start /B ".\Dir\Your app.exe"

:: Then stay in background for a certain time
Timeout /T "Seconds"

:: Continue your code...
Pause&Exit