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. MERCI !!!!! Ca fonctionne, j'ai pas compri pourquoi mais ca fonctionne !!! :)

      J'ai encore quelques souci mais j'vous dis quoi ;)
      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. 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. 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. Le logiciel que j'utilise pour quoi ? lire ou creer ?

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

              Voila
              1. viola ce problème dépend du logiciel que tu utilis...tu peux me dire le nom
                1. Ca me fait toujours la meme erreur "GOTO etait inattendu" si quelqu'un sait ?
                  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. 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.