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 :

Problème de comparaison


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Points : 42
    Points
    42
    Par défaut Problème de comparaison
    bonjour

    j'ai plusieurs fichier texte contenant des valeurs.

    Je souhaite trouver le fichier le plus récent et en vérifier les valeurs : elles ne doivent pas être différente de 0.2 d'une acquisition à l'autre.

    le fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AAA 192 135244 124.52  23.58
    AAA 192 135244 124.52  24.
    AAA 192 135244 124.52  23.58
    AAA 192 135244 124.52  23.56
    AAA 192 135244 124.52  33.58
    AAA 192 135244 124.52  23.57


    MON CODE :

    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
    echo off
    
    
    for /f "tokens=4* delims= " %%i in ('dir /o:d "C:\travail\TEST_RANGING\ranging\*.txt" ^| findstr /i /c:".txt"') do set VrFchRcnt=%%i %%j
    
    
    set files=C:\travail\TEST_RANGING\ranging\%VrFchRcnt%
    
    echo ouverture>log_%VrFchRcnt%
    
    
    
    rem echo %VrFchRcnt%
    
    
    set compt=0
    rem echo compt : %compt%
    
    
    SETlocal enableDelayedExpansion
    
    FOR /f "tokens=5 delims= " %%i in (C:\travail\TEST_RANGING\ranging\%VrFchRcnt%) do  ( 
    
    rem echo %%i
    rem pause
    rem echo %%i
    rem echo compt1 : !compt!
    if !compt!==0 ( set VALPREC=%%i
                 rem echo VALPREC1 =!VALPREC!
                 set /a compt=1 
    			 rem echo compt2 : !compt!
    			 rem echo on y passe
    			 )
    rem echo VALPREC =!VALPREC!
    rem pause
    set  Calcul=%%i - !VALPREC!
    echo E = !Calcul!
    echo E = !Calcul! >> __.vbs
    echo WScript.Echo E >> __.vbs
    rem cscript /nologo __.Vbs
    
    for /f "tokens=*" %%y in ('cscript/nologo __.vbs') do (set y=%%y)
    
    set delta=!y:~0,4%! 
    echo delta : !delta!
    
    pause
    
    
    if !delta! GEQ 0.02 (             rem  c est la que cela bug 
    echo on y passe
    echo Mesure incohérente>>log_%VrFchRcnt%)
    
    pause
    
    del __.vbs 2>nul
    pause
    
    set  valprec=%%i
    
    )
    
    pause
    Mon problème réside dans la vérification du delta ( if !delta! GEQ 0.02 ). i lf audra d'ailleurs que je mette valeur absolue de delta

    en effet, il faut une différence de 1.00 mini pour rentrer dans le IF alors que cela devrait être à partir de 0.02

    de plus je souhaiterai plutôt que remplir un log produire un son sans ouverture du lecteur ( je suis sous win8 et je n'ai rien trouvé sur ce systeme d'exploitation )

    par avance merci

    cordialement

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Tu peux contourner ce problème très facilement en supprimant le point dans tes valeurs :

    23.58 devient 2358 et la tu peux tester une difference de 2 (0,02 en réel)

    Voilà je t'ai fais un exemple. Le programme prend automatiquement la première valeur comme réference :

    Ton fichier de valeur (test.txt dans mon exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AAA 192 135244 124.52  23.58
    AAA 192 135244 124.52  24.
    AAA 192 135244 124.52  23.58
    AAA 192 135244 124.52  23.56
    AAA 192 135244 124.52  33.58
    AAA 192 135244 124.52  23.57

    Le fichier calcul.bat :

    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
    @echo off
    
    set "$limite=2"
    set "$val=0"
    set "$sw=0"
    set "$c=1"
    
    FOR /f "tokens=5" %%a in (test.txt) do  call:next %%a
    exit/b
    
    
    :next
    set "$val=%1"
    
    ::On supprime le point et on rajoute 2 "0" si il manque
    set "$val=%$val:.=%00"
    set "$val=%$val:~0,4%"
    
    ::La valeur de reference
    
    if %$sw%==0 (
        set "$ValRef=%$val%"
        echo Valeur de reference : [%$ValRef%]
        set "$sw=1")
    
    ::On calcule la différence
    set /a "$diff=%$ValRef%-%$val%"
    
    ::On test et affiche les résultat
    if  %$Diff:-=% geq %$limite% (Echo Valeur No [%$c%] - [%$val%] difference Sup. ou egual a %$Limite% -^> [%$Diff:-=%]) else (Echo Valeur No [%$c%] - [%$val%] difference [OK])
    set /a $c+=1
    en sortie tu auras :

    Valeur de reference : [2358]
    Valeur No [1] - [2358] difference [OK]
    Valeur No [2] - [2400] difference Sup. ou egual a 2 -> [42]
    Valeur No [3] - [2358] difference [OK]
    Valeur No [4] - [2356] difference Sup. ou egual a 2 -> [2]
    Valeur No [5] - [3358] difference Sup. ou egual a 2 -> [1000]
    Valeur No [6] - [2357] difference [OK]]


    Ça t'évite de mélanger ton bat avec du VBS.

    Avec un peu d'imagination et de logique on arrive à faire beaucoup de chose en BAT

    SON ET PAROLE :

    Pour le son et la parole tu peux télécharger ces 2 petits utilitaires que j'ai fait il y a bien longtemps :

    txt2mp3.exe et playsound.exe à télécharger ICI

    Tu décompacte le kitson.rar dans le répertoire où se trouve ton BAT

    Et voici la partie du code modifé pour qu'il te dise la ligne qui n'est pas OK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ::On test et affiche les résultat
    if  %$Diff:-=% geq %$limite% (Echo Valeur No [%$c%] - [%$val%] difference Sup. ou egual a %$Limite% -^> [%$Diff:-=%]
            txt2mp3.exe "Valeur numero  %$c% n'est pas ok"
            playsound.exe "temp.mp3") else (Echo Valeur No [%$c%] - [%$val%] difference [OK])
    set /a $c+=1
    Voilà ton BAT va parler, avec une jolie voie feminine......


    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Points : 42
    Points
    42
    Par défaut
    bonjour et merci de tout coeur.

    cela fonctionne de manière admirable et je vous en suis reconnaissant

    cordialement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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