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 :

probleme avec la commande if [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut probleme avec la commande if
    bonjour

    Je cherche à écrire une condition qui ressemble à ceci
    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
    set date=%date:~0,2%-%date:~3,2%-%date:~6,4%
    set heure_debut=%time:~0,2%:%time:~3,2%:%time:~6,4%
    set /a temps_debut=((%time:~0,2%*3600)+(%time:~3,2%*60)+(%time:~6,4%))
    
    echo "heure de debut :" %heure_debut% > Z:\temp.log
    echo "temps de depart en sconde :" %temps_debut% >> Z:\temp.log
    
    
    pause <-- pour marquer un temps de pause ..
    
    set heure_fin=%time:~0,2%:%time:~3,2%:%time:~6,4%
    set /a temps_fin=((%time:~0,2%*3600)+(%time:~3,2%*60)+(%time:~6,4%))
    
    echo "heure de fin :"  %heure_fin% >> Z:\temp.log
    echo "temps en seconde final :" %temps_fin% >> Z:\temp.log
    
    
    if %temps_total% geq 60 set /a temps_total=((%temps_fin%-%temps_debut%)/60) echo "temps total : " %temps_total% >> Z:\temp.log
    je voudrais tout simplement créer la condition suivante si le temps obtenu est supérieur à 60 alors tu écris le temps total divisé par 60

    lorsque j'exécute le script il ne rentre pas dans la condition pourtant j'attends plus 60 s ...

    Merci

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Essaie avec l'expansion retardée des variables, notamment sur temps_total (!temps_total!, donc).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    ça marche pas .. où j'ai mal compris

    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
    
    set HOST=tromel
    
    set date=%date:~0,2%-%date:~3,2%-%date:~6,4%
    set heure_debut=%time:~0,2%:%time:~3,2%:%time:~6,4%
    set /a temps_debut=((%time:~0,2%*3600)+(%time:~3,2%*60)+(%time:~6,4%))
    
    echo "heure de debut :" %heure_debut% > Z:\temp.log
    echo "temps de depart en sconde :" %temps_debut% >> Z:\temp.log
    
    pause 
    
    set heure_fin=%time:~0,2%:%time:~3,2%:%time:~6,4%
    set /a temps_fin=((%time:~0,2%*3600)+(%time:~3,2%*60)+(%time:~6,4%))
    
    echo "heure de fin :"  %heure_fin% >> Z:\temp.log
    echo "temps en seconde final :" %temps_fin% >> Z:\temp.log
    
    if !temps_total! geq 60 set /a temps_total=((%temps_fin%-%temps_debut%)/60) echo "temps total : " %temps_total% >> Z:\temp.log
    ai-je bien compris ?

    Merci

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Nan, te manque ça en début de batch, déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocal enabledelayedexpansion
    Ensuite, les "!" vont remplacer les "%" sur les variables à expansion différée dans TOUTES les utilisations de ladite variable (sauf à gauche du "=" sur le set, bien sûr). C'est nécessaire sur toute variable qui sera modifiée pendant l'exécution du batch.

    Par contre, je viens de voir que tu n'initialises pas temps_total avant ton if : donc, il va s'évaluer à zéro, donc ne jamais passer le test.
    Il ne te manques pas un bout avant le if, dans ce genre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set /a temps_total=%temps_fin%-%temps_debut%
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    je ne pense pas que l'expension soit neccessaire dans ce cas-ci puisque la variable "temps_total" est renseigné à partir de deux autres variables qui sont
    %temps_fin%
    et
    %temps_debut%
    .

    Le script est mis en suspend avec le code "pause".

    Lorsque je clique sur un bouton du clavier le script poursuit son déroulement, c'est à ce moment que la variable
    %temps_total%
    est renseignée.
    par contre j'avais oublié de l'initialiser mais malgré cela la condition n'est pas exécutée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if %temps_total% geq 60 set /a temps_total=((%temps_fin%-%temps_debut%)/60) echo "temps total : " %temps_total% >> Z:\temp.log
    La synthaxe est-elle juste ?? j'ai mis l'opérateur GEQ est-il approprié dans ce contexte ?

    J'ai fait un echo de la variable temps_total elle renvoie bien une valeur numérique.

    C'est la condition qui me pose un problème.


  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut
    Hmm il me semble que ce que tu veux faire... c'est ça:

    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
    set HOST=tromel
    
    set date=%date:~0,2%-%date:~3,2%-%date:~6,4%
    set heure_debut=%time:~0,2%:%time:~3,2%:%time:~6,4%
    set /a temps_debut=((%time:~0,2%*3600)+(%time:~3,2%*60)+(%time:~6,4%))
    
    echo "heure de debut :" %heure_debut% > Z:\temp.log
    echo "temps de depart en sconde :" %temps_debut% >> Z:\temp.log
    
    pause 
    
    set heure_fin=%time:~0,2%:%time:~3,2%:%time:~6,4%
    set /a temps_fin=((%time:~0,2%*3600)+(%time:~3,2%*60)+(%time:~6,4%))
    
    
    echo "heure de fin :"  %heure_fin% >> Z:\temp.log
    echo "temps en seconde final :" %temps_fin% >> Z:\temp.log
    
    set /a temps_total=%temps_fin%-%temps_debut%
    
    if %temps_total% geq 60 (
    	set /a temps_total_divise=%temps_total%/60
    	goto ok 
    ) 
    else (goto dommage)
    
    :ok
    echo temps total divise : %temps_total_divise% >> Z:\temp.log
    
    :dommage
    exit

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

Discussions similaires

  1. Problème avec les commandes systèmes
    Par ouakammathieu dans le forum Administration système
    Réponses: 8
    Dernier message: 27/05/2006, 15h06
  2. Problème avec la commande cd
    Par leia dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/10/2005, 21h40
  3. Problème avec la commande MAKE
    Par julio26 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 30/04/2005, 20h48
  4. Problème avec la commande su
    Par leng dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 10/02/2005, 17h31
  5. Problème avec la commande tar
    Par R3iTt0R dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 01/09/2004, 10h06

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