[BATCH] script de suppression des profils

script de suppression des profils [BATCH] - Shell/Batch - Programmation

Marsh Posté le 30-06-2009 à 11:20:41    

Bonjour,
 
j'ai un petit problème avec l'écriture d'un batch : je voudrais supprimer tous les dossiers contenant les profils utilisateurs se trouvant dans c:\Documents and settings\ excepté 3 : administrateur, all users, et admin
 
voila mon script :
 
@echo off
@echo #####################
@echo #####################
@echo ###### Nettoyage ######
@echo ####### Profil #######
@echo #####################
@echo #####################
@echo
@echo ###############################################################
@echo Nettoyage des profils existant sur la machine en local en cours ....
@echo ###############################################################
@echo on
 
Setlocal enabledelayedexpansion
 
dir /B "C:\Documents and Settings\">profil.txt
 
for /f "delims=" %%a in (profil.txt) do (
call :commande %%a)
 
:commande
if not %%a=="All Users"
 if not %%a==admin
  if not %%a==Administrateur
   CD "C:\Documents and Settings\"
   DEL /S /F /Q %%a
endlocal
pause
 
lorsque je lance le script, il me marque :  
 
#####################
#####################
##### Nettoyage #####
###### Profil ######
#####################
#####################
Commande ECHO désactivée.
###############################################################
Nettoyage des profils existant sur la machine en local en cours ....
###############################################################
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>Setlocal enabledelayedexpansion
 
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>dir /B "C:\Documents and Setting
s\" 1>profil.txt
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>for /F "delims=" %a in (profil.t
xt) do (call :commande %a )
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>(call :commande ADMINISTRATEUR )
 
La syntaxe de la commande est incorrecte.
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>if not %a=="All Users"
 
 
D'où vient le problème ?
Je suis perdu je n'ai rien trouvé pour résoudre ce problème, je ne comprend même pas le problème

Reply

Marsh Posté le 30-06-2009 à 11:20:41   

Reply

Marsh Posté le 30-06-2009 à 11:28:20    

pourquoi tu fais pas

Code :
  1. CD "C:\Documents and Settings\"
  2. for /f "delims=" %%a in (profil.txt) do (
  3.   if not %%a=="All Users"
  4.     if not %%a==admin
  5.       if not %%a==Administrateur     
  6.          DEL /S /F /Q %%a
  7. )
 

??


Message édité par pataluc le 30-06-2009 à 11:29:11
Reply

Marsh Posté le 30-06-2009 à 11:37:36    

en utilisant :commande, je voulais essayer de voir d'où venez le pb mais à la base j'avais bien fait ton code, mais le pb persiste toujours
 
ps : pour info ce que je veux supprimer ce sont des répertoires.

Reply

Marsh Posté le 30-06-2009 à 11:42:16    

et c'est quoi l'erreur avec mon code?

Reply

Marsh Posté le 30-06-2009 à 11:44:06    

toujours la même erreur, au même endroit

Reply

Marsh Posté le 30-06-2009 à 11:49:02    

#####################
#####################
##### Nettoyage #####
###### Profil ######
#####################
#####################
Commande ECHO désactivée.
###############################################################
Nettoyage des profils existant sur la machine en local en cours ....
###############################################################
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>Setlocal
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>dir /B "C:\Documents and Setting
s\" 1>profil.txt
 
C:\Documents and Settings\ADMINISTRATEUR\Bureau>CD "C:\Documents and Settings\"
 
La syntaxe de la commande est incorrecte.
C:\Documents and Settings>if not %a=="All Users"

Reply

Marsh Posté le 30-06-2009 à 11:51:41    

t'as une erreur sur un cd? O_o

 

perso j'ai mis ca dans un .bat, pas de souci:

Code :
  1. dir /B "C:\Documents and Settings\">profil.txt
  2. cd "C:\Documents and Settings\"
  3. for /f "delims=" %%a in (profil.txt) do (
  4. echo %%a
  5. )


Message édité par pataluc le 30-06-2009 à 11:53:18
Reply

Marsh Posté le 30-06-2009 à 12:06:43    

peut être que justement l'erreur n'est pas sur le CD, ^^ puisque il continue jusqu'au --> C:\Documents and Settings>if not %a=="All Users"


Message édité par vben le 30-06-2009 à 12:21:07
Reply

Marsh Posté le 30-06-2009 à 12:45:30    

les scripts bat ne s'arrêtent pas s'ils rencontrent une erreur... donc ca ne veut rien dire.

Reply

Marsh Posté le 30-06-2009 à 13:39:16    

pourtant mon script s'arrête puisque l'invite de commande se ferme, il ne continue pas jusqu'au --> pause

Reply

Marsh Posté le 30-06-2009 à 13:39:16   

Reply

Marsh Posté le 30-06-2009 à 13:57:27    

déja dans ta "fonction" commande, il ne faut plus utiliser %%a, mais %1. %%A est local à la boucle for.

 

sinon, j'ai trouvé ton pb, il s'agit du if. soit tu met la commande sur la même ligne, soit tu mets des parenthèses:

 
Code :
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. dir /B "C:\Documents and Settings\">profil.txt
  4. for /f "delims=" %%a in (profil.txt) do (
  5.   cd "C:\Documents and Settings\"
  6.   if not "%%a"=="All Users" (
  7.     if not %%a==admin (
  8.       if not %%a==Administrateur (
  9.         echo %%a
  10.         rem del /S /F /Q %%a
  11.       )
  12.     )
  13.   )
  14. )
  15. endlocal
  16. pause



Message édité par pataluc le 30-06-2009 à 14:17:19
Reply

Marsh Posté le 30-06-2009 à 14:19:28    

ou la version avec :commande

Code :
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. dir /B "C:\Documents and Settings\">profil.txt
  4. for /f "delims=" %%a in ( profil.txt ) do (
  5.   call :commande %%a
  6. )
  7. :commande
  8. cd "C:\Documents and Settings\"
  9. if not "test%*"=="test" (
  10.   if not "test%*"=="testAll Users" (
  11.     if not "test%*"=="testadmin" (
  12.       if not "test%*"=="testAdministrateur" (
  13.         REM del /S /F /Q %1
  14.         echo %1
  15.       )
  16.     )
  17.   )
  18. )
  19. exit /b
  20. endlocal
  21. pause

Reply

Marsh Posté le 30-06-2009 à 14:20:07    

en fait il faut bien prévoir les cas ou les variables sont vides, en rajoutant toujours test ou une autre chaine dans les tests, sinon ca les fait foirer.

Reply

Marsh Posté le 07-07-2009 à 11:29:52    

qu'est ce qui ne va pas avec ce que je t'ai envoyé dans mon dernier post?

Reply

Marsh Posté le 07-07-2009 à 12:10:37    

non c'est bon, je te remercie, le seul problème c'est que comme je m'en douté, cette saloperie de windobe me fait chier au niveau de la casse GRRR ar pour lui ADMIN est différent de admin GRRRR

Reply

Marsh Posté le 07-07-2009 à 12:38:07    

par contre un petit problème, le script ne supprime que les fichiers et non les répertoires, est ce normal ? ou est ce que la commande ne permet pas la suppression de répertoires.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed