Condition if-else dans le fichier de commandes

J’ai besoin de convertir la prochaine condition de code (langage C) en fichier de commandes:

if(version == 1 || version == 2) { // do something } else { // do something other } 

Donc, dans un fichier batch, cela ressemblera à:

 if "%version%"==1 ( // do something ) if "%version%"==2 ( // do something ) if not "%version%"==1 ( // do something other ) if not "%version%"==2 ( // do something other ) 

Y a-t-il une meilleure façon de l’écrire?

“Il n’ya pas de logique et / ou mais vous pouvez utiliser le puissant goto.

 if "%version%"=="1" goto :TRUE if "%version%"=="2" goto :TRUE REM do something else echo neither 1 or 2 :( goto :eof :TRUE REM do something echo 1 or 2 :) 
 setlocal EnableDelayedExpansion set wantedVersions=/1/2/ if "!wantedVersions:/%version%/=!" neq "%wantedVersions%" ( echo Version %version% is 1 or 2, do something ) else ( echo Version %version% is NOT 1 or 2, do something other ) 

Cette expression: "!wantedVersions:/%version%/=!" signifie: “Dans wantedVersion, élimine la chaîne” /% version% / “; ainsi, si la version est 1 ou 2, cette valeur sera éliminée et le résultat sera différent de l’original => version est 1 ou 2. Les barres obliques sont nécessaire pour éviter la fausse identification de version = 12.

Oui, je sais que cette méthode semble compliquée, mais elle est plus simple que les autres options. Essayez simplement d’imaginer comment les autres options devraient être si vous avez 3 valeurs différentes, ou 4 … De plus, cette méthode peut être nestede dans d’autres commandes IF / FOR sans aucun problème.

Une autre façon avec la même philosophie que la réponse de @ Aacini

 @ECHO OFF set /p $var=version ? : set "$version=[1] [2]" echo %$version% | find "[%$var%]" && echo do something || echo do something else