Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
.BAT problème variables dans commande
Auteur Message
Répondre en citant
Message .BAT problème variables dans commande 
Bonjour à tous,

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.

Le but étant de créer un espèce de désinstalleur en BAT, qui dans un premier temps vérifie s'il n'existe pas des dossiers dans des chemins indiqué (R1,R2,R3...), s'il existe un dossier alors il le supprime, sinon il lance une recherche dans tous les disques durs afin de le trouver et supprimer.

Quelle serait la solution pour avoir 4 variables (ou plus), 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=E:\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

Erase "NOM DU BAT.bat" >NUL 2>&1


Par ailleurs, il me semble que parfois, lorsque le chemin est dans C:\Program Files, les dossiers ne peuvent pas être effacés à cause des droits administrateurs. Comment puis-je utiliser dans ce cas la commande "sudo" qui apparemment pourrait me sortir de ça.

Merci de vos aides... (je galère là-dessus depuis des mois !)



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message .BAT problème variables dans commande 
Salut,

des variables tu peux en avoir 1000 c'est pas un problème tu peux les traiter dans un for ça t'évites de les déclarer :


Code:
set $chemin="C:\Program Files (x86)\NOM DU DOSSIER" "C:\Program Files (x86)\DOSSIER\NOM DU DOSSIER" "D:\NOM DU DOSSIER" "E:\DOSSIER\NOM DU DOSSIER"

for %%a in (%$chemin%) do (call:traite %%a)
goto:eof

:traite
if exist %1 (rd /s /q %1
             goto:eof)
 
for %%i in (C,D) do (if exist "%%i:\" (set VrLetter=%%i
                                       call :search %%i
                                       goto:eof)
goto:eof

:search

....


Mais reprenons ton code :

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


Tu es dans %R3% et tu détruis %R2%

La même chose pour %R4%


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message .BAT problème variables dans commande 
Bonjour,

Merci pour ta réponse rapide Sachadee.

je vais essayer le nouveau code que tu m'as donné. Ca me plait bien en tout cas dans le principe et il est surtout plus court.

Pour les erreurs dans R2 et R3, ce sont des erreurs de réécriture, j'ai copié le code directement à partir de mes tests... oui j'ai fait des tests un peu particuliers.


Sinon j'ai posté un autre message sur le forum pour créer un fonction similaire. Aurais-tu des idées ?

http://batch.xoo.it/t3704-BAT-Supprimer-un-dossier-avec-clef-registre.htm


Merci en tous cas de ton aide !



Répondre en citant
Message .BAT problème variables dans commande 
Bonjour,

Bon j'ai essayé le nouveau code. Il fonctionne bien, mais si il supprime le dossier dans les chemins indiqués, il lance ensuite toujours la recherche du fichier, se qui est inutile puisqu'il à été supprimé...

Voici le code :



set $chemin="C:\Program Files (x86)\NOM DU DOSSIER" "C:\Program Files (x86)\DOSSIER\NOM DU DOSSIER" "D:\NOM DU DOSSIER" "E:\DOSSIER\NOM DU DOSSIER"

for %%a in (%$chemin%) do (call:traite %%a)
goto:eof

:traite
if exist %1 (rd /s /q %1
goto:eof)

for %%i in (C,D) do (if exist "%%i:\" (set VrLetter=%%i
call :search %%i
goto:eof)
goto:eof

:search
for /r "%VrLetter%:\" %%j in ("NOM DU DOSSIER") do (
if exist "%%j" RMDIR %%j /S /Q
)
)



Merci pour les retours.



Répondre en citant
Message .BAT problème variables dans commande 
Bon, j'ai réglé des petits points pour ce .bat :



set $chemin="C:\Program Files (x86)\test" "D:\test"

for %%a in (%$chemin%) do (call:traite %%a)

:traite
if exist %1 (rd /s /q %1
goto:eof)

for %%i in (C,D) do (if exist "%%i:\" (set VrLetter=%%i
call :search %%i)

:search
for /r "%VrLetter%:\" %%j in ("test") do (
if exist "%%j" RMDIR %%j /S /Q
)
)

pause
end



Mais comme avant =

Si j'ai une seule entrée : set $chemin="D:\test" cela fonctionne parfaitement

Mais si j'ajoute plusieurs entrées : set $chemin="C:\Program Files (x86)\test" "D:\test" "..." Il supprime le fichier, mais lance la recherche quand même, car à mon avis il pense que si l'un des chemins n'est pas trouvés, alors il doit le chercher. Ces chemins sont juste une indication : s'il en trouve au moins 1 alors il le supprime sans recherche, mais si le résultat est 0 dossier trouvé dans les chemins donné en "set $chemin=" alors il lance la recherche.


Comment puis-je faire dans ce cas ?

Merci Idea



Message .BAT problème variables dans commande 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch