Comment définir un délai d'attente pour un processus sous Windows 7?
Je voudrais démarrer un programme avec un fichier de commandes windows. Mais le programme devrait s'arrêter après une certaine valeur de délai d'attente. Par exemple: exécutez le programme 60 secondes et arrêtez-le après 60 secondes.
Sous Linux, il y a cette belle commande timeout
pour faire ce que je veux. Windows a également une commande timeout
, mais c'est juste pour mettre en pause une commande, pour retarder son exécution. Y at-il autre chose sous Windows pour le faire ?
Configuration: Windows 7, 64 Bits, Professionnel
4 réponses
start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f
Bali C a donné une réponse concise et au point. 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 cette. Si quelqu'un a besoin de la même chose que moi.
Votre.MTD
REM...
CALL STARTwaitKILL..bat /relative/path/your_program.exe
REM...
STARTwaitKILL.MTD
@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é minerai de prendre plus d'arguments pour la priorité et autres, mais je n'en ai pas besoin. Ça ne devrait pas être difficile à ajouter.
N'existe pas de commande dans Windows pour retarder une application ou pour définir un délai d'attente pour une application
Timeout 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 pas du nom de tout 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'attente, et peut-être dans L'outil NIRCMD, ou ps2exec, vérifier leur aide fichiers, ou quelqu'un à l'intérieur des Kits WAIK.
C'est le seul que vous pouvez 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
Le start
+timeout
+taskkill
attend exactement le temps donné. 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 D'attente GNU. N'hésitez pas à télécharger et compiler à partir de