[batch] frappe de la touche entréé inatendue

Fermé
AurA - 13 févr. 2007 à 17:08
 AurA - 14 févr. 2007 à 15:58
Bonjour
mon probleme est le suivant je chercherai a verouiller le script de maniere
a ce qu il ne se kill pas a une frappe innatendu sur la touche entréé.
le script est fonctionnel mais a la demande de confirmation de la premiere variable
donc au niveau du setting de la variable oui/non les utilisateur pressés appuient
sur entréé et le script se coupe.
auriez vous une solution pour passer outre ce probleme ? je ne sait pas du tout
quoi donner a manger a google pour trouver la solution

ci joint le sript largement censurer mais ce n'est que le fond qui interesse :)

Merci a tous de vos lectures/reponses

__________________________________
@echo off
rem "installation silencieuse de l agent "
rem "Mappage du lecteur reseau avec les sources de l agent"
NET USE o: \\<network_path> /persistent:no
rem "lancement du setup AGENT"
o:\<nom de lexecutable>.exe /<switche de lexecutable>
net stop "<nom_du_service>"
cls
rem " un peu de deco :) ainsi que l explication pour les utilisateurs"
echo ###################
echo # Decoration #
echo ###################
echo blabla
echo reblalbla
echo blablablabla
:Balise 1
rem " demande le intervention utilisateur saisie d une chaine decaratere reutiliséé"
rem " plus tard "
echo "blabla"
rem "setting de la variable"
set /P <variable>=
echo "confirmation de la frappe utilisateur est %<variable>%"
echo est-ce correct ? tappez oui ou non et validez avec entree
set /P <variable oui/non>=
if %<variable oui/non>%==oui goto Balise 2
if %<variable oui/non>%==non goto Balise 1
:Balise 2
________________________________________________________________________

1 réponse

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
14 févr. 2007 à 09:34
Salut.
si tu met
if %<variabel oui/non>%=="" goto ...
en fait, il faut tester si ta variable n'est pas vide.
ou sinon, mettre un "else" et une balise juste après le "set /P<variable>="
exemple:
@echo off
rem "installation silencieuse de l agent "
rem "Mappage du lecteur reseau avec les sources de l agent"
NET USE o: \\<network_path> /persistent:no
rem "lancement du setup AGENT"
o:\<nom de lexecutable>.exe /<switche de lexecutable>
net stop "<nom_du_service>"
cls
rem " un peu de deco :) ainsi que l explication pour les utilisateurs"
echo ###################
echo # Decoration #
echo ###################
echo blabla
echo reblalbla
echo blablablabla
:Balise 1
rem " demande le intervention utilisateur saisie d une chaine decaratere reutiliséé"
rem " plus tard "
echo "blabla"
rem "setting de la variable"
set /P <variable>=
echo "confirmation de la frappe utilisateur est %<variable>%"
:Balise 3
echo est-ce correct ? tappez oui ou non et validez avec entree
set /P <variable oui/non>=
if %<variable oui/non>%==oui goto Balise 2
if %<variable oui/non>%==non goto Balise 1
goto Balise 3
:Balise 2
________________________________________________________________________
0
Merci pour la reponse

javais trouver une autre solution qui utilisee un switch de if /I ainsi qu un operateur logique NEQ ( non equal) ce qui me donner pour la variable de confirmation
...
if %<variable oui/non>%==oui goto Balise 2
if %<variable oui/non>%==non goto Balise 1
if /I %<variable oui/non>% NEQ oui goto balise 3
if /I %<variable oui/non>% NEQ non goto balise 3
...

cependant ce n est pas la solution choisie car le script avait du mal a se retrouver avec 4 if a la suite jai donc modifier comme il suis avec la vaiable de confirmation setter par defaut a 2
...
set <variable oui/non>=2
echo est-ce correct ? tapez 1=>oui 2=>non et validez avec entree
set /P <variable oui/non>=
if /I %<variable oui/non>% LEQ 1 goto Balise 2
if /I %<variable oui/non>% GEQ 2 goto balise 1
...

le seul soucis reste la gestion du caractere espace qui met fin au script de maniere innatendue dans les deux variables en esperant qu il ny ai pas de faute de frappe de la part des utilisateurs :) car la le script commence a ressembler a rien ( suis vraiment pas doué ^^ )
0