Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2448 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] script de suppression des profils

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BATCH] script de suppression des profils

n°1900500
vben
Posté le 30-06-2009 à 11:20:41  profilanswer
 

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

mood
Publicité
Posté le 30-06-2009 à 11:20:41  profilanswer
 

n°1900506
pataluc
Posté le 30-06-2009 à 11:28:20  profilanswer
 

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
n°1900511
vben
Posté le 30-06-2009 à 11:37:36  profilanswer
 

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.

n°1900515
pataluc
Posté le 30-06-2009 à 11:42:16  profilanswer
 

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

n°1900516
vben
Posté le 30-06-2009 à 11:44:06  profilanswer
 

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

n°1900519
vben
Posté le 30-06-2009 à 11:49:02  profilanswer
 

#####################
#####################
##### 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"

n°1900522
pataluc
Posté le 30-06-2009 à 11:51:41  profilanswer
 

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
n°1900530
vben
Posté le 30-06-2009 à 12:06:43  profilanswer
 

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
n°1900542
pataluc
Posté le 30-06-2009 à 12:45:30  profilanswer
 

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

n°1900552
vben
Posté le 30-06-2009 à 13:39:16  profilanswer
 

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

mood
Publicité
Posté le 30-06-2009 à 13:39:16  profilanswer
 

n°1900559
pataluc
Posté le 30-06-2009 à 13:57:27  profilanswer
 

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
n°1900567
pataluc
Posté le 30-06-2009 à 14:19:28  profilanswer
 

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

n°1900569
pataluc
Posté le 30-06-2009 à 14:20:07  profilanswer
 

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.

n°1903079
pataluc
Posté le 07-07-2009 à 11:29:52  profilanswer
 

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

n°1903107
vben
Posté le 07-07-2009 à 12:10:37  profilanswer
 

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

n°1903118
vben
Posté le 07-07-2009 à 12:38:07  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] script de suppression des profils

 

Sujets relatifs
script php pour insérer les scoresscript gestionnaire de fichier
[resolu]script pour sauvegarde incrémentaleScript SQL à 3 conditions
[VBS][RESOLU][SCRIPT]Script de suppression de fichiers temporairesC# et langages de script
Batch - Réduire navigateurSuppression espaces en plus
aide batch 
Plus de sujets relatifs à : [BATCH] script de suppression des profils


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR