C'est pour éviter de crasher mon programme quand j'entre un choix.
Si je fais :
Code :
- SET /P choice=Entre un choix:
- IF %choice% EQU 1 echo bla1
- 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 :
- SET /P choice=Entre un choix:
- IF "%choice%" EQU "" ((SET choice=) & CALL :ERROR 1)
- IF "%choice%" EQU "1" ((SET choice=) & GOTO START_EXE1)
- IF "%choice%" EQU "2" ((SET choice=) & GOTO START_EXE2)
- ((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 :
- :ERROR
- IF "%1" EQU "1" SET errormsg=Tu dois entrer une valeur!
- IF "%1" EQU "2" SET errormsg=Le choix "%2" n'existe pas!
- ECHO. & ECHO %errormsg%
- 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.