.BAT problème variables dans commande

Fermé
micromega Messages postés 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 - 27 avril 2013 à 00:56
micromega Messages postés 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 - 20 mai 2013 à 16:38
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 avril 2013 à 12:17
test
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 avril 2013 à 13:07
je ne peux rien poster
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 28/04/2013 à 15:21
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 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 1
29 avril 2013 à 11:48
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
29 avril 2013 à 11:52
le nombre de variables ne doit pas poser de problèmes, en tout cas 4
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
29 avril 2013 à 14:10
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
29 avril 2013 à 14:32
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 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
29 avril 2013 à 15:05
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 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 1
6 mai 2013 à 13:53
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 mai 2013 à 15:02
place un echo on avant R3 pour voir ce que fait le script
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
6 mai 2013 à 18:25
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 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 1
20 mai 2013 à 16:38
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