Batch comment dire si le champ est vide [Résolu/Fermé]

Signaler
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
-
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
-
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


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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60997 internautes nous ont dit merci ce mois-ci


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
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
11
MERCI !!!!! Ca fonctionne, j'ai pas compri pourquoi mais ca fonctionne !!! :)

J'ai encore quelques souci mais j'vous dis quoi ;)
Messages postés
21
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
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.
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
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)
Messages postés
18212
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2020
4 973
et comme ça ? IF "xx%leave%" == "xx" GOTO action
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
11
Ca me fait toujours la meme erreur "GOTO etait inattendu" si quelqu'un sait ?
Messages postés
21
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
4
viola ce problème dépend du logiciel que tu utilis...tu peux me dire le nom
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
11
Le logiciel que j'utilise pour quoi ? lire ou creer ?

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

Voila
Messages postés
21
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
4
a vrai dire, cette solution me semble valable..
Messages postés
187
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
9 août 2010
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 ?
Messages postés
21
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
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..