IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Compte à rebours : MM:SS [Batch]


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Compte à rebours : MM:SS
    Bonjour à tous.

    Je vous explique mon problème. J'ai donc un compte à rebours en .bat mais il ne s'arrête pas à "00:00". Et je ne sais pas comment intégrer une "double condition" du style:" IF %min%:%sec%==00:00 goto :fin ". J'aimerais aussi savoir si il est possible d’empêcher la fermeture de la console durant le décompte?
    Mon but étant de lancer une application (n'importe la quelle) une fois arriver à 00:00.
    Merci d'avance.




    Code : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    @echo off
    setlocal enabledelayedexpansion
    REM ===========================VARIABLE=================================
    set min=2
    set sec=10
    REM ====================================================================
    
    :sec
    REM si %sec%=00 direction label min pour incrémenter les minutes de -1
    if "%sec%"=="00" (goto min)
    if "%sec%"=="09" (set sec=%sec:~1%)
    if "%sec%"=="08" (set sec=%sec:~1%)
     
    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a sec = %sec% - 1
     
    REM si %sec% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %sec% LSS 10 (set sec=0!sec!)
    goto :boucle
     
    :min
    REM donne la valeur 59 à la variable sec
    set sec=59
     
    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a min = %min% - 1
     
    REM si %min% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %min% LSS 10 (set min=0!min!)
    goto :boucle
    
    :boucle
    cls
    echo %min%:%sec%
    REM Fait un ping qui dure 1 seconde ( plus ou moins )
    @ping 1.1.1.1 -n 1 -w 1000 >nul
    goto :sec
     
    :fin
    cls
    echo 00:00
    echo Compteur fini
    pause
    exit

  2. #2
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Bonjour,
    Est-ce que ceci vous convient?
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    @echo off
    setlocal enabledelayedexpansion
    REM ===========================VARIABLE=================================
    set min=2
    set sec=10
    REM ====================================================================
     
    :sec
    REM si %sec%=00 direction label min pour incrémenter les minutes de -1
    if "%sec%"=="00" (goto min)
    if "%sec%"=="09" (set sec=%sec:~1%)
    if "%sec%"=="08" (set sec=%sec:~1%)
     
    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a sec = %sec% - 1
     
    REM si %sec% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %sec% LSS 10 (set sec=0!sec!)
    goto :boucle
     
    :min
    REM donne la valeur 59 à la variable sec
    set sec=59
     
    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a min = %min% - 1
     
    REM si %min% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %min% LSS 10 (set min=0!min!)
    goto :boucle
     
    :boucle
    cls
    set "current_time=%min%:%sec%"
    if "%current_time%" == "0:00" (
    	echo c'est finit!
    	REM ICI TU LANCES TON APPLICATION
    	exit
    ) else (
    	echo %min%:%sec%
    	REM Fait un ping qui dure 1 seconde ( plus ou moins )
    	@ping 1.1.1.1 -n 1 -w 1000 >nul
    	goto :sec
    )
    :fin
    pause
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  3. #3
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par devilsnake88 Voir le message
    Bonjour,
    Est-ce que ceci vous convient?
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    @echo off
    setlocal enabledelayedexpansion
    REM ===========================VARIABLE=================================
    set min=2
    set sec=10
    REM ====================================================================
     
    :sec
    REM si %sec%=00 direction label min pour incrémenter les minutes de -1
    if "%sec%"=="00" (goto min)
    if "%sec%"=="09" (set sec=%sec:~1%)
    if "%sec%"=="08" (set sec=%sec:~1%)
     
    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a sec = %sec% - 1
     
    REM si %sec% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %sec% LSS 10 (set sec=0!sec!)
    goto :boucle
     
    :min
    REM donne la valeur 59 à la variable sec
    set sec=59
     
    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a min = %min% - 1
     
    REM si %min% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %min% LSS 10 (set min=0!min!)
    goto :boucle
     
    :boucle
    cls
    set "current_time=%min%:%sec%"
    if "%current_time%" == "0:00" (
        echo c'est finit!
        REM ICI TU LANCES TON APPLICATION
        exit
    ) else (
        echo %min%:%sec%
        REM Fait un ping qui dure 1 seconde ( plus ou moins )
        @ping 1.1.1.1 -n 1 -w 1000 >nul
        goto :sec
    )
    :fin
    pause

    Pour moi ça me convient énormément +1 from me (Good Catch)

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup, cela me convient parfaitement
    Connaîtriez-vous aussi une manière d'empêcher l'utilisateur de fermer la fenêtre console d'un simple clique sur la croix?

  5. #5
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par dralloc1995 Voir le message
    Merci beaucoup, cela me convient parfaitement
    Connaîtriez-vous aussi une manière d'empêcher l'utilisateur de fermer la fenêtre console d'un simple clique sur la croix?
    Peut-être en HTA avec un compte à rebours.

    Code : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Option Explicit
    Dim Title,ws,nMinutes,nSeconds,sMessage,Command,Executer
    Title = "Session Timer"
    Set ws = CreateObject("wscript.Shell")
    nMinutes = 20
    nSeconds = 0
    sMessage = "<font color=Red size=2><b>You have"
    'Open a chromeless window with message
    with HTABox("lightBlue",130,300,1070,600)
    .document.title = "Session Timer"
    .msg.innerHTML = sMessage
    do until .done.value or (nMinutes + nSeconds < 1)
        .msg.innerHTML = sMessage & "<br>" & nMinutes & ":" &   Right("0"&nSeconds, 2) _
        & " minutes of session time remaining</b></font><br>"
        wsh.sleep 1000 ' milliseconds
        nSeconds = nSeconds - 1
        if nSeconds < 0 then 
            if nMinutes > 0 then
                nMinutes = nMinutes - 1
                nSeconds = 59
            end if
        end if
    loop
    .done.value = true
    .close
    end with
    ws.Popup "Your session time has finished. You will now be logged off.","5",Title,0+48
    Command ="cmd /c Shutdown.exe -l -f"
    Executer = WS.Run(Command,0,False) 
    '*****************************************************************
    Function HTABox(sBgColor,h, w, l, t)
    Dim IE, HTA, sCmd, nRnd
    randomize : nRnd = Int(1000000 * rnd)
    sCmd = "mshta.exe ""javascript:{new " _
    & "ActiveXObject(""InternetExplorer.Application"")" _
    & ".PutProperty('" & nRnd & "',window);" _
    & "window.resizeTo(" & w & "," & h & ");" _
    & "window.moveTo(" & l & "," & t & ")}"""
    with CreateObject("WScript.Shell")
        .Run sCmd, 1, False
        do until .AppActivate("javascript:{new ") : WSH.sleep 10 : loop
        end with  'WSHShell
        For Each IE In CreateObject("Shell.Application").windows
            If IsObject(IE.GetProperty(nRnd)) Then
                set HTABox = IE.GetProperty(nRnd)
                IE.Quit
                HTABox.document.title = "HTABox"
                HTABox.document.write _
                "<HTA:Application contextMenu=no border=thin " _
                & "minimizebutton=no maximizebutton=no sysmenu=no SHOWINTASKBAR=no >" _
                & "<body scroll=no style='background-color:" _
                & sBgColor & ";font:normal 10pt Arial;" _
                & "border-Style:inset;border-Width:3px'" _
                & "onbeforeunload='vbscript:if not done.value then " _
                & "window.event.cancelBubble=true:" _
                & "window.event.returnValue=false:" _
                & "done.value=true:end if'>" _
                & "<input type=hidden id=done value=false>" _
                & "<center><span id=msg>&nbsp;</span><br>" _
                & "<input type=button id=btn1 value=' Log Off ' "_
                & "onclick=done.value=true><center></body>"
                HTABox.btn1.focus
                Exit Function
            End If
        Next
        MsgBox "HTA window not found."
        wsh.quit
    End Function
    Peut-être ça vous convient ou non ?, mais juste pour l'info

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    @echo off
    setlocal enabledelayedexpansion
    REM ===========================VARIABLE=================================
    set min=0
    set sec=10
    REM ====================================================================

    :sec
    REM si %sec%=00 direction label min pour incrémenter les minutes de -1
    if "%sec%"=="00" (goto min)
    if "%sec%"=="09" (set sec=%sec:~1%)
    if "%sec%"=="08" (set sec=%sec:~1%)

    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    set /a sec = %sec% - 1

    REM si %sec% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %sec% LSS 10 (set sec=0!sec!)
    goto :boucle

    :min
    REM donne la valeur 59 à la variable sec
    set sec=59

    REM incrémente de -1 ( ne fonctionne pas avec 09 et 08 d'où les deux conditions du dessus pour enlever le 0 de devant )
    if %min%==0 goto fin
    set /a min = %min% - 1

    REM si %min% vaut en dessous de 10 alors lui ajouter un 0 devant.
    if %min% LSS 10 (set min=0!min!)
    goto :boucle

    :boucle
    cls
    echo %min%:%sec%
    REM Fait un ping qui dure 1 seconde ( plus ou moins )
    @ping 1.1.1.1 -n 1 -w 1000 >nul
    goto :sec

    :fin
    cls
    echo 00:00
    echo Compteur fini
    pause
    exit
    Juste une petite ligne ajouté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [timer] Compte à rebours pour redirection !
    Par Raideman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2005, 20h07
  2. Compte à rebours
    Par Anduriel dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/12/2005, 20h12
  3. compte à rebours
    Par Datord dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/11/2005, 21h22
  4. compte à rebours
    Par etoile1506 dans le forum C
    Réponses: 10
    Dernier message: 27/10/2005, 15h20
  5. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo