.BAT problème variables dans commande
micromega
Messages postés
141
Statut
Membre
-
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...
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:
- .BAT problème variables dans commande
- Invite de commande - Guide
- Creer un fichier .bat - Guide
- Commande terminal mac - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Commande dism - Guide
12 réponses
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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 ?
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
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""
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.
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.
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.
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) ...
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) ...
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
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