Batch comment dire si le champ est vide

Résolu
kosmic69 Messages postés 195 Statut Membre -  
kosmic69 Messages postés 195 Statut Membre -
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. Utilisateur anonyme
     
    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
    10
  2. Utilisateur anonyme
     
    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
    8
  3. kosmic69 Messages postés 195 Statut Membre 11
     
    MERCI !!!!! Ca fonctionne, j'ai pas compri pourquoi mais ca fonctionne !!! :)

    J'ai encore quelques souci mais j'vous dis quoi ;)
    1
  4. sokiz Messages postés 21 Statut Membre 4
     
    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.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kosmic69 Messages postés 195 Statut Membre 11
     
    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)
    0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    et comme ça ? IF "xx%leave%" == "xx" GOTO action
    0
  8. kosmic69 Messages postés 195 Statut Membre 11
     
    Ca me fait toujours la meme erreur "GOTO etait inattendu" si quelqu'un sait ?
    0
  9. sokiz Messages postés 21 Statut Membre 4
     
    viola ce problème dépend du logiciel que tu utilis...tu peux me dire le nom
    0
  10. kosmic69 Messages postés 195 Statut Membre 11
     
    Le logiciel que j'utilise pour quoi ? lire ou creer ?

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

    Voila
    0
  11. sokiz Messages postés 21 Statut Membre 4
     
    a vrai dire, cette solution me semble valable..
    0
  12. kosmic69 Messages postés 195 Statut Membre 11
     
    Oui mais elle ne l'est pas a mon grand regret ... j'ai cette erreur qui persiste .. Pour toi mon code te semble bon ?
    0
  13. sokiz Messages postés 21 Statut Membre 4
     
    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..
    0