.BAT problème variables dans commande

micromega Messages postés 141 Statut Membre -  
micromega Messages postés 141 Statut Membre -
Bonjour,

Je cherche de l'aide au sujet d'une commande '.bat'. D'après moi le soucis viens du nombre de variable dans la commande. Au delà de R2 si nous ajoutons des variables supplémentaires le ".bat" ne fonctionne plus.
Quel serait la solution pour avoir 4 variables, comme dans l'exemple ci-dessous ?

Voici le code :

set R1=C:\Program Files (x86)\NOM DU DOSSIER
set R2=C:\Program Files (x86)\DOSSIER\NOM DU DOSSIER
set R3=D:\NOM DU DOSSIER
set R4=D:\DOSSIER\NOM DU DOSSIER
set cherche=0

if exist "%R1%" (
rd /s /q "%R1%"
) else (
set cherche=1
)

if exist "%R2%" (
rd /s /q "%R2%"
) else (
set cherche=1
)

if exist "%R3%" (
rd /s /q "%R2%"
) else (
set cherche=1
)

if exist "%R4%" (
rd /s /q "%R2%"
) else (
set cherche=1
)

if %cherche% EQU 1 (
for %%i in (C,D) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (NOM DU DOSSIER) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
)
)
)

rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\NOM DU DOSSIER" >NUL 2>&1
rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\DOSSIER\NOM DU DOSSIER" >NUL 2>&1
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\NOM DU DOSSIER" >NUL 2>&1
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\DOSSIER\NOM DU DOSSIER" >NUL 2>&1

Merci de vos aides...
A voir également:

12 réponses

dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
test
0
dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
je ne peux rien poster
0
dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
les 2 tests essayent d'enlever R2
if exist "%R3%" (  
rd /s /q "%R2%"  
) else (  
set cherche=1  
)  
if exist "%R4%" (  
rd /s /q "%R2%"  
) else (  
set cherche=1  
0
micromega Messages postés 141 Statut Membre 1
 
Re bonjour Dubcek,

Je vais réessayer en corrigeant cela, mais il me semble que ce n'est juste une erreur de copie, car j'ai déjà réalisé plusieurs tests pour trouver l'erreur.

Je repost une fois retesté.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
le nombre de variables ne doit pas poser de problèmes, en tout cas 4
0
ryko1820 Messages postés 1878 Statut Membre 277
 
hello,

Déjà je quotterais uniquement au moment de la déclaration des variables les chemins pour la lisibilité.
- Ensuite comme signalé par Dubcek il est tenté de supprimer %R2% dans plusieurs tests qui ne le concernent pas.
- Dans if exist "%%i:\" set VrLetter=%%i& call :search %%i le dernier %%i n'est pas exploité par search et est inutile.
- Dans for /r "%VrLetter%:\" %%j in (NOM DU DOSSIER) do est ce normal que (NOM DU DOSSIER) soit en dur ?
- goto FinBoucle n'est pas exploité car pas de label correspondant.
- si :search est appelé goto :eof et les rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\NOM DU DOSSIER" >NUL 2>&1, etc ... ne sont jamais lancés, c'est l'effet recherché ?
... il y a peut être d'autres choses que je n'ai pas vu ...

C'est pourquoi faire, un uninstall sous Windows 7/8 ?
0
dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
Déjà je quotterais uniquement au moment de la déclaration des variables les chemins pour la lisibilité.
pas moi, parce qu'alors les " font partie de la variable, il faudra les enlever si on ne les veut pas
C:> set a="aa bb"
C:> echo %a%
"aa bb"
C:> echo "%a%"
""aa bb""

0
ryko1820 Messages postés 1878 Statut Membre 277
 
S'agissant de lancer des commandes sur des chemins sous Windows, qu'elles sont en absolu et plutôt statiques, ça me paraissait une bonne stratégie, bien sûr à condition de ne pas les re-quotter comme c'est fait ici.
0
micromega Messages postés 141 Statut Membre 1
 
Bonjour,

Merci de vos réponses.

L'erreur pour "%R2" n'est qu'une erreur de réécriture et non le problème en question.
Je rappel que la commande fonctionne parfaitement lorsqu'elle est écrite avec seulement R1 et R2.
SI j'en créer une nouvelle avec R3 et plus, les opérations n'aboutissent plus.

SInon, oui il s'agit de créer un désinstallateur sous XP, 7, 8 ...
Rechercher dans des chemins définis s'il existe le dossier cherché. S'il n'existe pas alors on entreprend une recherche dans tous les lecteurs afin de le supprimer.
Puis on termine par nettoyer le menu démarrer.

Je me répète, mais l'opération fonctionne avec seulement R1 et R2, c'est là que je comprends pas.

Merci à vous en tous cas de m'aider dans la résolution du problème.
0
dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
place un echo on avant R3 pour voir ce que fait le script
0
ryko1820 Messages postés 1878 Statut Membre 277
 
Hello

Pourquoi ne pas simplement supprimer des répertoires d'installations potentiels comme tu le fais à la fin (juste tester leur existence avant suppression ?) Il me semble que tu te compliques un peu la vie juste pour , en fin de compte, faire ça ... Peut être aussi effectuer un test au départ le chemins d'installation des programmes avec la variable d'environnement %ProgramFiles% (car sous XP : "C:\Program Files (x86)" n'existe pas par exemple) ...
0
micromega Messages postés 141 Statut Membre 1
 
Bonjour,

Certains des messages que je poste ici ne sont pas affichés. Désolé donc pour le temps de ma réponse, car j'avais posté bien avant.

Pour Ryko1820, je ne le fais pas simplement comme tu le présente, car je veux que s'il me trouve le dossier qu'il me le supprime et que par la suite il ne me lance pas la recherche, puisque le dossier à été supprimer.

Est-ce que chez vous cela fonctionne ?

Merci
0