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. 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 ;)
        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..