Posez votre question Signaler

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

kosmic69 188Messages postés 10 décembre 2007Date d'inscription 3 mai 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

Batch comment dire si le champ est vide »

12 réponses
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
MERCI !!!!! Ca fonctionne, j'ai pas compri pourquoi mais ca fonctionne !!! :)

J'ai encore quelques souci mais j'vous dis quoi ;)
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
et comme ça ? IF "xx%leave%" == "xx" GOTO action
Ajouter un commentaire
Réponse
+0
moins plus
Ca me fait toujours la meme erreur "GOTO etait inattendu" si quelqu'un sait ?
Ajouter un commentaire
Réponse
+0
moins plus
viola ce problème dépend du logiciel que tu utilis...tu peux me dire le nom
Ajouter un commentaire
Réponse
+0
moins plus
Le logiciel que j'utilise pour quoi ? lire ou creer ?

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

Voila
Ajouter un commentaire
Réponse
+0
moins plus
a vrai dire, cette solution me semble valable..
Ajouter un commentaire
Réponse
+0
moins plus
Oui mais elle ne l'est pas a mon grand regret ... j'ai cette erreur qui persiste .. Pour toi mon code te semble bon ?
Ajouter un commentaire
Réponse
+0
moins plus
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..
Ajouter un commentaire
Ce document intitulé « Batch comment dire si le champ est vide » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?