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 :

Condition if GTR [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Par défaut Condition if GTR
    Bonjour à tous, bonsoir le forum,

    Je suis face à un problème bien étrange. Je développe un petit batch qui convertit un décimal vers un hexa. Pour l'instant j'ai juste une boucle qui concatène dans une string (nommée hex) le dernier dividende et le reste des divisions successives par 16. Cette boucle vérifie donc à chaque fois si l'on peut encore diviser par 16. Le truc c'est que si j'enlève la condition de test , mon résultat est juste et si je la mets j'obtiens un message "Il manque un opérande" et mon résultat est faux.

    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
    @echo off & setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
    set /p Nstr=taper un nombre:
    set hex=;
    set /a N = %Nstr%
    set /a en = 0
    set /a r = 0
    
    :boucle
    set /a N=%N%
    IF %N% GTR 15 (
    	set /a en=%N%/16
    	set /a rTMP=%en%*16
    	set /a r=%N%-%rTMP%
    	echo %N%=16* %en% + %r%
    	set hex = %r% %hex%
    	set /a N=%en%
    	pause
    	goto boucle
    )
    set hex=%N% %hex%
    pause
    bug.JPG : résultat avec la condition
    good.JPG : résultat sans la condition (mais forcément ça boucle à l'infini)

    Dans l'attente de vos lumières, bonne soirée
    Bel'
    Images attachées Images attachées   

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 223
    Par défaut
    salut,

    probablement comme ç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
    @echo off
    set /p Nstr=taper un nombre:
    set hex=;
    set /a N = %Nstr%
    set /a en = 0
    set /a r = 0
    set rTMP = 0
    
    setlocal enabledelayedexpansion
    :boucle
    set /a N=%N%
    IF %N% GTR 15 (
    	set /a en=%N%/16
    	set /a rTMP=!en!*16
    	set /a r=%N%-!rTMP!
    	echo %N%=16* !en! + !r!
    	set hex = !r! !hex!
    	set /a N=!en!
    	pause
    	goto boucle
    )
    set hex=!N! !hex!
    pause

  3. #3
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 223
    Par défaut
    voici un script que je viens de faire et qui a l'air de fonctionner pour convertir un nombre décimal en héxa.

    Etudies le :

    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
    @echo off
    
    set /p nb=Decimal :
    echo.
    
    if %nb% LSS 10 echo Hexa : %nb%
    if %nb% EQU 10 echo Hexa : A
    if %nb% EQU 11 echo Hexa : B
    if %nb% EQU 12 echo Hexa : C
    if %nb% EQU 13 echo Hexa : D
    if %nb% EQU 14 echo Hexa : E
    if %nb% EQU 15 echo Hexa : F
    
    set division=
    set modulo=
    set fin=
    
    setlocal enabledelayedexpansion
    
    :loop
    if !nb! GTR 16 (
    	
    	set /a modulo=!nb!%%16
    	set /a nb=!nb!/16
    	
    	set division=!nb!
    	if !nb! EQU 10 set division=A
    	if !nb! EQU 11 set division=B
    	if !nb! EQU 12 set division=C
    	if !nb! EQU 13 set division=D
    	if !nb! EQU 14 set division=E
    	if !nb! EQU 15 set division=F
    	
    	if !modulo! EQU 10 set modulo=A
    	if !modulo! EQU 11 set modulo=B
    	if !modulo! EQU 12 set modulo=C
    	if !modulo! EQU 13 set modulo=D
    	if !modulo! EQU 14 set modulo=E
    	if !modulo! EQU 15 set modulo=F
    	
    	set fin=!modulo!!fin!
    	
    	goto loop
    
    )
    
    echo Hexa : !division!!fin!
    echo.
    
    PAUSE
    exit

  4. #4
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Par défaut
    Bonjour,

    Arg, j'avais trouvé la réponse entre temps Merci pour vos réponses très complètes.

    edit: pour ceux qui seraient interessés et qui n'auraient pas compris, dans un if, la clef réside dans les "!" au lieu de "%"


    Bel'

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

Discussions similaires

  1. Condition If multiple
    Par M1000 dans le forum ASP
    Réponses: 2
    Dernier message: 01/03/2004, 13h46
  2. [MYSQL] conditions et requetes
    Par sebos63 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 16h41
  3. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04
  4. Condition et contenu TImage
    Par Detlev_linux dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2003, 01h00
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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