Je crée un fichier batch pour exécuter un programme sur mon bureau xyz.exe
pendant 4 heures, puis fermez-le pendant 1 heure et répétez le processus. Voici mon script.
:a
START C:\Users\Mukul\Desktop\xyz.exe
SLEEP 14400
taskkill /F /IM xyz.exe
SLEEP 3600
goto :a
Selon ici , le script devrait attendre. Cela dit aussi:
SLEEP 10
retardera l'exécution de la prochaine commande de 10 secondes. donc SLEEP 14400
devrait retarder l'exécution de 4 heures.
Résultats actuels: La commande suivante est exécutée dès que la première commande est terminée.
Résultats souhaités: La prochaine commande doit attendre 4 heures avant d'exécuter la dernière commande.
Vous pouvez également utiliser timeout
.
Voici un exemple:
@echo off
echo Hi
timeout /t 1 /nobreak > nul
/t
n'est pas obligatoire
1 est le nombre de secondes à attendre
/nobreak
garantit que l'utilisateur ne peut pas sauter l'attente
> nul
redirige la sortie vers rien, donc vous ne voyez rien
La commande SLEEP peut ne pas être prise en charge par votre version de Windows. Essaye ça:
:a
START C:\Users\Mukul\Desktop\xyz.exe
TIMEOUT 14400
taskkill /F /IM xyz.exe
TIMEOUT 3600
goto :a
Tout d'abord: Bash et Batch sont des langues très différentes.
Maintenant, la réponse.
Je préfère la commande ping
à la commande sleep
, car il est facile de basculer entre les secondes et les millisecondes:
ping -n 11 127.0.0.1>nul
Cette commande fait une pause de 10 secondes puis reprend.
Ou:
ping 1.1.1.1 -n 1 -w 10001 >nul
Qui marque également une pause de 10 secondes, mais en millisecondes.
Les deux peuvent être adaptés en:
:a
start C:\Users\Mukul\Desktop\xyz.exe
ping -n 14401 127.0.0.1>nul
taskkill /F /IM xyz.exe
ping -n 3601 127.0.0.1>nul
goto a
CLAUSE DE NON-RESPONSABILITÉ : J'ai PAS essayé le dernier morceau de code (parce que je ne ' t avoir 4 heures supplémentaires pour faire quelque chose).