[BATCH] Améliorer ce bout de code? [résolu]

Améliorer ce bout de code? [résolu] [BATCH] - Shell/Batch - Programmation

Marsh Posté le 27-04-2007 à 05:23:49    

Bonjour, je cherche à améliorer ce bout de code car je répète toujours la même action et je suis sur qu'il y a un autre moyen, une sorte de "switch case" peut etre?
 

Code :
  1. IF "%choice%" EQU " )" ((SET choice=) & CALL :ERROR 1)
  2. IF "%choice%" EQU ">" ((SET choice=) & CALL :ERROR 1)
  3. IF "%choice%" EQU "<" ((SET choice=) & CALL :ERROR 1)


Message édité par armyman le 28-04-2007 à 22:27:58
Reply

Marsh Posté le 27-04-2007 à 05:23:49   

Reply

Marsh Posté le 27-04-2007 à 14:12:16    

A quoi te sert ce script je ne le comprend pas


Message édité par webding le 27-04-2007 à 14:28:52
Reply

Marsh Posté le 27-04-2007 à 15:29:38    

C'est pour éviter de crasher mon programme quand j'entre un choix.
 
Si je fais :
 

Code :
  1. SET /P choice=Entre un choix:
  2. IF %choice% EQU 1 echo bla1
  3. IF %choice% EQU 2 echo bla2

^ ca,ca crash mon programme quand on entre aucune valeur, ou un espace vide, ou d'autres caractère spéciaux. De plus ca met l'ancienne valeur au prochain choix à faire.
 
 

Code :
  1. SET /P choice=Entre un choix:
  2. IF "%choice%" EQU ""  ((SET choice=) & CALL :ERROR 1)
  3. IF "%choice%" EQU "1" ((SET choice=) & GOTO START_EXE1)
  4. IF "%choice%" EQU "2" ((SET choice=) & GOTO START_EXE2)
  5. ((SET choice=) & CALL :ERROR 2 %choice%)

^ ca, ca résoud le problème des crash si aucune valeur n'est entrée ou seulement des espaces vides, et ca remet un choix vide pour la prochaine demande de choix. J'ai un callback :ERROR qui gère les erreur:

Code :
  1. :ERROR
  2. IF "%1" EQU "1" SET errormsg=Tu dois entrer une valeur!
  3. IF "%1" EQU "2" SET errormsg=Le choix "%2" n'existe pas!
  4. ECHO. & ECHO     %errormsg%
  5. GOTO RESTART


 
Mais ca résoud pas le problème des crashs avec des caractère comme " )" ">" "<" "|" etc etc, et le seul moyen que j'ai trouvé c'est de faire comme dans mon premier post. Je pense qu'il y a un moyen plus efficace en utilisant | (ou) mais franchement je trouve pas comment..mais bon c'est pas grave, c'est juste que j'aime avoir des codes nickel et efficaces.

Reply

Marsh Posté le 27-04-2007 à 15:33:32    

A mon avi tu t'emerde pour rien, c'est pas grave si sa carche quand tu rentre un caractére special

Reply

Marsh Posté le 27-04-2007 à 21:23:25    

webding a écrit :

A mon avi tu t'emerde pour rien, c'est pas grave si sa carche quand tu rentre un caractére special


Tain ca c'est de la réponse pertinente.

Reply

Marsh Posté le 28-04-2007 à 10:16:12    

Je donne mon avi c'est tout

Reply

Marsh Posté le 28-04-2007 à 13:07:10    

webding a écrit :

Je donne mon avi c'est tout


Ton avis on s'en fout un peu en fait, encore qu'il aurait pu être intéressant si tu avais eu un minimum de connaissances mais ce n'est pas le cas. Quand tu veux faire quelque chose utilisable par tout le monde il faut le perfectionner jusqu'a ce qu'il n'aie aucun problème.
 
En plus d'avoir fait deux posts inutiles, tu n'as pas répondu a la question d'armyman.

Reply

Marsh Posté le 28-04-2007 à 19:55:37    

Allons allons ^^  
 
J'ai fais autrement et ca marche maintenant, le seul caractère qui crash c'est  "  et je crois qu'on peut rien faire contre ca :( . Enfin bon c'est pas trop grave lol.  
 
webding, j'aime le travail bien fait et aussi j'ai pas envie que les utilisateurs du prog se plaignent que ca crash :)

Reply

Marsh Posté le 28-04-2007 à 23:25:30    

T'as essayé avec :

 

IF "%choice%" EQU "\"" ((SET choice=) & CALL :ERROR 1)

 

PS : Suggestion stupide mais bon :D


Message édité par WiiDS le 28-04-2007 à 23:25:40
Reply

Marsh Posté le 29-04-2007 à 00:06:26    

Hehe j'avais pas pensé au caractère d'echappement..bon, ca change rien, mais merci quand même :)

Reply

Marsh Posté le 29-04-2007 à 00:06:26   

Reply

Marsh Posté le 17-11-2010 à 22:28:37    

Essaie ce Code:
 
@echo OFF
 
set choice=""
 
:loopenter
 
SET /P choice=Entre un choix:
 
IF %choice% EQU 1 @echo Value 1 OK
IF %choice% EQU 2 @echo Value 2 OK
 
IF %choice%.=="". (
  @echo. No Value Entered  
  goto loopenter
)
 
@echo. FIN

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed