1 pièce(s) jointe(s)
Time qui ne se mets pas à jours dans une boucle
hello,
j'ai un petit souci, j'ai un script batch où je teste l'heure (avec time) pour savoir si c'est le matin ou le soir
Code:
1 2 3 4 5 6 7 8 9 10
| @echo off
echo début: %Time%
for /l %%A in (1 1 60) do if %Time% lss 12:00:00.00 (
echo matin: %Time%
) else (
echo soir: %Time%
)
echo fin: %Time%
pause
exit /b |
mais je m'aperçois que %Time% garde toujours la même valeur (car en réalité au lieu de faire "echo..." il y a un job qui tourne).
si je lance vers 11h par exemple et bien après 12h il continuera à faire le job du matin. Par contre si je lance après 13h il prend bien le job du soir => donc ma contition fonctionne :)
quelqu'un a-t-il une idée pour "forcer" time à ce mettre à jour a chaque boucle?
si je rajoute un ping on voit bien que c'est toujours le même temps.
Pièce jointe 579300
merci d'avance de votre aide.
Solution : Activer l'expansion retardée !!!
:salut:
Votre problème peut se résoudre en activant l'expansion retardée : Explication de l'expansion retardée https://forum.developpez.be/images/icone-resolu.png [Batch]
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| @echo off
chcp 65001>nul
Title Update Time
echo(
echo ========================
echo début: %Time%
echo ========================
Timeout /T 2 /NoBreak>nul
SetLocal EnableDelayedExpansion
for /l %%A in (1 1 60) do if %Time% lss 12:00:00.00 (
cls
echo(
echo ========================
echo Matin: !Time!
echo ========================
Timeout /T 1 /NoBreak>nul
) else (
cls
echo(
echo ========================
echo Soir: !Time!
echo ========================
Timeout /T 1 /NoBreak>nul
)
echo(
echo ========================
echo fin: !Time!
pause
exit /b |