Batch comment dire si le champ est vide

Résolu
Bonjour,

Je suis en train de programmer un batch et je n'arrives pas a trouver une commande sur le net. Comment dire si mon "set" est vide alors on redemande l'information ?

J'aurais pensé a un truc du style : If variable == EMPTY GOTO requestvariable

Merci pour votre aide

12 réponses

  1. Hello

    Tu dois pouvoir y arriver en faisant IF "%variable" == "" goto machin.

    les guillemets de sont pas indispensables, le machin va remplacer le nom par l'avaleur.

    variable : %1 ; si tu dis "%1" et qu'il n'y a rien, ça donne "".
    Tu peux mettre autre chose : XX%1XX vide devrait donner XXXX.
    J'ai eu le pb il y a peu, et dans le help de la commande IF il y a des exemples.
    Si tu utilises une variable d'environnement : ?%TOTO%? vide donne ??
    Attassion aux caractères spéciaux quand même, ça peut le troubler ...

    Un exemple qui marche :

    SET TOTO=XXXX
    SET TITI=
    IF /%TOTO%/ == // GOTO TOTOVIDE
    ECHO TOTO non vide = %TOTO%
    :TOTOVIDE
    IF /%TITI%/ == // GOTO TITIVIDE
    ECHO TITI non vide = %TITI%
    :TITIVIDE
    PAUSE

    Cordialement, 
    Pierre
    1. il y a une autre solution plus facile, tu peux juste mettre parexemple: if variable == '' (ce sont deux apostrophes)..
      j'éspère que ca va résoudre ton problème.
      1. Cela ne fonctionne pas, j'aimerais pouvoir faire en sorte que si :

        :action
        SET /P leave= Veuillez taper 1 xxxx, 2 pour xxxx et 3 pour xxxx :
        IF %leave% == 1 GOTO retry
        IF %leave% == 2 GOTO start
        IF %leave% == 3 GOTO end
        IF "%leave%" == "" GOTO action
        GOTO end

        Vous voyez un peu ? Et si je ne rentre rien, la fenetre se referme ... (je suis sous vista)
        1. Ca me fait toujours la meme erreur "GOTO etait inattendu" si quelqu'un sait ?
          1. viola ce problème dépend du logiciel que tu utilis...tu peux me dire le nom
            1. Le logiciel que j'utilise pour quoi ? lire ou creer ?

              Pour lire : cmd.exe
              Pour creer : editeur de texte

              Voila
              1. Oui mais elle ne l'est pas a mon grand regret ... j'ai cette erreur qui persiste .. Pour toi mon code te semble bon ?
                1. mais attend, si on parlera du programme, la derniere goto, pourquoi tu la utisisé "goto end"..t doi mettre seulement end car c'est une ettiquette..
                  1. Comme ça ça marchera :
                    rem @ECHO OFF
                    :action
                    SET /P leave= Veuillez taper 1 xxxx, 2 pour xxxx et 3 pour xxxx :
                    IF '%leave%' == '1' GOTO retry
                    IF '%leave%' == '2' GOTO start
                    IF '%leave%' == '3' GOTO end
                    IF "%leave%" == "" GOTO action
                    GOTO end

                    C'est pasque il doit y avoir une valeur après IF ; si la variable est vide, ça fait IF == et il ne s'y retrouve pas.

                    Tu peux aussi utiliser CHOICE

                    Cordialement, 
                    Pierre
                    1. MERCI !!!!! Ca fonctionne, j'ai pas compri pourquoi mais ca fonctionne !!! :)

                      J'ai encore quelques souci mais j'vous dis quoi ;)