Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Time qui ne se mets pas à jours dans une boucle


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    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 Batch :Sélectionner tout -Visualiser dans une fenêtre à part
    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.

    merci d'avance de votre aide.

  2. #2
    Expert éminent
    Solution : Activer l'expansion retardée !!!

    Votre problème peut se résoudre en activant l'expansion retardée : Explication de l'expansion retardée [Batch]
    Code BAT :Sélectionner tout -Visualiser dans une fenêtre à part
    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

  3. #3
    Membre régulier
    super, merci
    et en plus je comprends pourquoi ...

###raw>template_hook.ano_emploi###