[Batch] ELSE IF : Plusieurs variables

Fermé
BeFaX Messages postés 14245 Date d'inscription mercredi 24 décembre 2008 Statut Contributeur Dernière intervention 6 août 2013 - 25 déc. 2009 à 04:09
BeFaX Messages postés 14245 Date d'inscription mercredi 24 décembre 2008 Statut Contributeur Dernière intervention 6 août 2013 - 25 déc. 2009 à 05:41
Bonsoir à tous et tout d'abord, Noyeux Joël à tous :).

Alors voilà je viens ici car j'ai un (léger) problèmes avec quelques conditions IF/ELSE de base.
Mais apparemment, ce n'est pas le bon jour , où alors y'a un truc que je n'accroche pas :(.

Je vous explique mon programme :
Il va tout d'abord vérifier la présence de plusieurs logiciels de cette façon :


if not exist "logiciels\cam.exe" (echo  Clean After Me         : ABSENT & set abs=1& set cam=0)
if not exist "logiciels\CCleaner.exe" (echo  CCleaner               : ABSENT & set abs=1& set ccleaner=0)
if not exist "logiciels\FCleaner.exe" (echo  FCleaner               : ABSENT & set abs=1& set fcleaner=0)



Il va donc attribuer une valeur à %ABS% si un ou plusieurs logiciels sont absents, et aussi attribuer un 0 à la variable du programme si il est absent. J'ai une quinzaine de logiciels tierces.

Maintenant, j'ai un menu pour lancer ces logiciels, seulement, j'ai fait en sorte que le batch vérifie la valeur des variables de chaque programme pour afficher, ou pas, le programme dans le menu. Mais ce n'est pas réellement cela le soucis. Il me faudrait arranger ce code :

if "%fcleaner%"=="0" (
  if "%ccleaner%"=="0" (
    if "%cam%"=="0" (echo    º 6. -----                 º º                          º) 
	else (echo    º 6. Clean After Me        º º                          º)
  ) else (
    if "%cam%"=="0" (echo    º 6. CCleaner              º º                          º 
	) else (echo    º 6. CCleaner/CaM          º º                          º)
  )
) else (
  if "%ccleaner%"=="0" (
    if "%cam%"=="0" (echo    º 6. FCleaner              º º                          º 
	) else (echo    º 6. FCleaner/CaM          º º                          º)
  ) else (
      if "%cam%"=="0" (echo    º 6. F/CCleaner            º º                          º 
	  ) else (echo    º 6. F/CCleaner, CaM       º º                          º)
  ) 
)


J'avoue que je bloque un peu avec toutes ces parenthèses et ces ELSE IF ...
Ce que je voudrais :

Si ni FCleaner, ni CCleaner, ni CaM est présent, alors on affiche rien :
echo    º 6. -----                       º º                          º

Si FCleaner est absent ainsi que CCleaner, mais pas CaM alors on affiche :
echo    º 6. Clean After Me        º º                          º

Si FCleaner est absent, mais pas CCleaner et CaM alors on affiche :
echo    º 6. CCleaner/CaM         º º                          º

Si FCleaner et CaM sont absents, mais pas CCleaner alors on affiche :
echo    º 6. CCleaner                º º                          º

Si seulement FCleaner est présent alors on affiche :
echo º 6. FCleaner º º º
etc ... vous m'avez compris.

Donc en bref, il me faudrait un affichage pour CHAQUE CAS de figure, donc :
1. -----
2. Clean After Me
3. CCleaner/CaM
4. FCleaner/CaM
5. F/CCleaner
6. FCleaner
7. CCleaner
8. F/CCleaner, CaM

Désolé si je m'explique un peu mal, c'est Noël, ça se justifie :).
Merci d'avance !

1 réponse

BeFaX Messages postés 14245 Date d'inscription mercredi 24 décembre 2008 Statut Contributeur Dernière intervention 6 août 2013 3 812
25 déc. 2009 à 05:41
J'ai essayé plusieurs tentatives, et c'est vraiment bizarre, car si je change mon batch de répertoire, il me fait une erreur :
"( était attendu"

Quand je suis dans le dossier où j'ai créé le batch, mes else/if fonctionnent très bien, par contre, si je le copie dans un autre répertoire, il me fait cette erreur :(.
0