Batch comment dire si le champ est vide

Résolu/Fermé
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 - 29 déc. 2007 à 02:38
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 - 29 déc. 2007 à 13:15
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

Utilisateur anonyme
29 déc. 2007 à 09:41
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
Utilisateur anonyme
29 déc. 2007 à 12:52
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
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 11
29 déc. 2007 à 13:15
MERCI !!!!! Ca fonctionne, j'ai pas compri pourquoi mais ca fonctionne !!! :)

J'ai encore quelques souci mais j'vous dis quoi ;)
1
sokiz Messages postés 21 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 31 décembre 2007 4
29 déc. 2007 à 10:04
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 11
29 déc. 2007 à 11:23
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
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
29 déc. 2007 à 12:11
et comme ça ? IF "xx%leave%" == "xx" GOTO action
0
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 11
29 déc. 2007 à 12:17
Ca me fait toujours la meme erreur "GOTO etait inattendu" si quelqu'un sait ?
0
sokiz Messages postés 21 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 31 décembre 2007 4
29 déc. 2007 à 12:20
viola ce problème dépend du logiciel que tu utilis...tu peux me dire le nom
0
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 11
29 déc. 2007 à 12:31
Le logiciel que j'utilise pour quoi ? lire ou creer ?

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

Voila
0
sokiz Messages postés 21 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 31 décembre 2007 4
29 déc. 2007 à 12:34
a vrai dire, cette solution me semble valable..
0
kosmic69 Messages postés 189 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 9 août 2010 11
29 déc. 2007 à 12:35
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
sokiz Messages postés 21 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 31 décembre 2007 4
29 déc. 2007 à 12:40
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