Je voudrais démarrer un programme avec un fichier batch Windows. Mais le programme devrait s'arrêter après un certain délai d'expiration. Par exemple: exécutez le programme 60 secondes et arrêtez-le après 60 secondes.
Sous Linux, il y a cette commande Nice timeout
pour faire ce que je veux. Windows a également une commande timeout
, mais c'est juste pour suspendre une commande, pour retarder son exécution. Y a-t-il autre chose sous Windows pour le faire?
Configuration: Windows 7, 64 bits, professionnel
start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f
Bali C a donné une réponse concise et précise. J'avais besoin de quelque chose d'un peu plus fonctionnel et réutilisable. Basé sur l'exemple de Bali C. Je suis venu avec ça. Si quelqu'un a besoin de la même chose que moi.
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
Pourrait être étoffé pour prendre plus d'arguments pour la priorité et autres, mais je n'en ai pas besoin. Cela ne devrait pas être difficile à ajouter.
start
+ timeout
+ taskkill
attend exactement l'heure indiquée. Comme je devais arrêter d'attendre si le processus se termine plus tôt , j'ai créé ma propre solution en C++.
Le programme tuxliketimeout
imite le délai GN . N'hésitez pas à télécharger et compiler à partir de
N'existe aucune commande dans Windows pour retarder une application ou pour définir un délai d'expiration pour une application
Le délai d'attente dans Windows est pour retarder le processus d'exécution de CMD/Batfile, rien de plus utilitaire.
Vous pouvez utiliser des outils externes pour cela, je ne me souviens plus du nom d'aucun maintenant, tant de logiciels souterrains, désolé, mais je me souviens que dans le forum officiel autoit existe un outil de ligne de commande similaire pour lancer une application définissant le délai d'expiration, et peut-être dans l'outil NIRCMD, ou ps2exec, consultez leurs fichiers d'aide, ou quelqu'un dans les kits WAIK.
C'est le seul que vous puissiez faire:
@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