81 votes

Comment faire en sorte qu'un fichier batch attende ou se mette en veille pendant quelques secondes ?

J'utilise un fichier batch pour démarrer quelques programmes dont j'ai besoin en arrière-plan. Jusqu'à présent, j'avais utilisé la commande pause pour l'exécuter après la fin de certains autres démarrages. Je préférerais utiliser les commandes wait ou sleep, mais elles ne semblent pas être incluses dans Windows 7.

Quelqu'un sait-il comment remettre ces commandes en place, ou une autre méthode permettant d'obtenir les mêmes résultats ?

-1voto

user31930 Points 31

Si vous avez installé Python (et ajouté le chemin d'installation à votre variable d'environnement), vous pouvez laisser Python faire le sommeil avec quelque chose comme :

echo from time import sleep; sleep(3) | python

(Si vous avez Windows Vista ou supérieur, timeout naturellement est la voie à suivre, cependant).

-1voto

programmer365 Points 1

Voici une macro de fichier batch que vous pouvez utiliser :

@echo off & cls & setlocal disabledelayedexpansion
set LF=^

set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
set _delay=for /l %%a in (1 1 2) do if %%a==2 (%\n%
  for /f "tokens=1 delims=, " %%e in ("!argv!") do (%\n%
    set "_sec=%%~e" %\n%
    %__APPDIR__%ping.exe localhost -n !_sec! -w 1000 ^>nul 2^>^&1 %\n%
  ) %\n%
) else setlocal enabledelayedexpansion ^& set argv=,

Vous pouvez l'appeler dans votre fichier batch comme suit :

%_delay% seconds

Comme %_delay% 10 attendra 10 secondes. Pour changer le nom de la macro, remplacez "_delay" par n'importe quel autre nom dans la quatrième ligne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X