Commande pour supprimer le contenu d'un dossier (fichiers + dossiers)

Commande pour supprimer le contenu d'un dossier (fichiers + dossiers) - Win NT/2K/XP - Windows & Software

Marsh Posté le 11-04-2006 à 17:06:10    

Bonjour,
 
Je cherche la commande sous Windows XP pro qui permet de vider un répertoire (fichier + répertoires et sous-répertoire) sans le supprimer lui-même.
 
- "del" n'efface que les fichiers.
- "rd" et "rmdir" veulent supprimer le répertoire racine.
 
Ca m'énerve  :fou: car sous W9x, deltree ou del (je ne sais plus), avec les bonnes options permettaient de faire ce genre de chose.
 
J'ai l'impression que ce que je veux est d'une simplicité enfantine mais je bloque comme un demeuré.
 
Si quelqu'un pouvait me donner le tuyau, je pourrais enfin me détendre.
 
MERCI  :jap: .

Reply

Marsh Posté le 11-04-2006 à 17:06:10   

Reply

Marsh Posté le 11-04-2006 à 17:17:27    

Le pb c'est qu'il s'agit de répertoire système ("Bureau" et "Tempory Internet files" entre autres).

Reply

Marsh Posté le 11-04-2006 à 17:20:27    

Citation :

Humm, la commande deltree foo a simplement été remplacée par rmdir /s foo. Deltree ne conservait pas non plus le fichier racine à la connaissance.


 
Alors c'est "del" qui permettait de conserver le dossier racine.

Reply

Marsh Posté le 11-04-2006 à 17:26:00    

Je voudrais un truc dans ce goût là pour me permettre de vider les fichiers temporaires d'Internet Explorer et de nettoyer les Bureaux des PC du réseau dont je m'occupe (Réseau Novell). Via un Batch.
 
Le seul Hic c'est que "rd" veut supprimer le répertoire "bureau".
 
rd /s /Q "\\****\c$\Documents and Settings\****\Bureau\"

Reply

Marsh Posté le 11-04-2006 à 18:11:45    

Citation :

Supprimer tous les fichiers et dossiers du bureau ? Quelle drôle d'idée...


 
L'idée, c'est d'apprendre aux élèves de l'établissement dans lequel je travaille à enregistrer leur travail dans leur répertoire "Mes Documents" qui pointe sur un lecteur réseau (et donc sur un serveur qui est sauvegardé régulièrement), et non en local. D'autant plus que lorsque le temps me manque et qu'un PC merde, je restaure une image Ghost.
 
 

Citation :

Pour les fichiers temporaires, il existe l'outil Clean Manager ( cleanmgr.exe ) qui permet de les supprimer.


 
Je connais mais peut-on l'utiliser par le biais du réseau ?

Reply

Marsh Posté le 11-04-2006 à 18:13:59    

Citation :

Et juste pour information, la commande del, sous Windows 95/98/2K/XP ne sait pas supprimer les sous-dossiers.


 
Demain j'aurais retrouver la ligne de commande qui me permettait de supprimer le contenu d'un dossier, fichiers et sous-répertoire compris.
Je ne peux pas ce soir car je n'ai pas de W9x sous la main.

Reply

Marsh Posté le 12-04-2006 à 12:20:36    

Citation :

Deltree ne conservait pas non plus le fichier racine à la connaissance.


 
Sous W9x, la commande :
deltree /y c:\dossier\
 
efface sans confirmation tout le contenu de "dossier" (fichiers, sous-répertoire + contenu des sous-répertoire) sans effacer le dossier racine "dossier".
 
Je cherche un équivalent sous Windows XP.
 
Si quelqu'un a une idée !!!  :bounce:

Reply

Marsh Posté le 12-04-2006 à 12:22:55    

deltree /y c:\dossier
 
Cette ligne par contre efface "dossier".

Reply

Marsh Posté le 12-04-2006 à 12:42:37    

C'est ce que je suis en train d'essayer.
 
Merci de t'intéresser à mon problème.  :jap:

Reply

Marsh Posté le 12-04-2006 à 13:02:59    

Bon ben ça marche.
J'ai récupéré la commande DELTREE à cette adresse (pour ceux qui ne l'ont pas sous la main) :
 
http://gilles.ronsin.free.fr/#deltree  :jap:  
 
N'oubliez pas de mettre le "\" si vous ne voulez pas que le dossier racine soit supprimé (ex : deltree /y c:\dossier\)
 
Merci à piwu qui est quand même le seul que ce pb n'a pas rebuté.
 
 
 
 

Reply

Marsh Posté le 12-04-2006 à 13:02:59   

Reply

Marsh Posté le 12-04-2006 à 13:10:42    

Nan nan, on cherche aussi, mais on trouve pas ;)
 
Sinon, si jamais tu as des commandes très complexe à passer en batch, je te conseille de t'intéresser à Cscript (fourni avec wxp). On fait ce qu'on veut avec ça, mais il faut programmer c'est sûr.
 

Reply

Marsh Posté le 12-04-2006 à 13:15:13    

Un truc qui parait tout con mais bon.
Pourquoi ne pas faire ça avec Robocopy ? :D
 
Mise en situation :
Tu as ton dossier C:\MonDossier que tu souhaites vider régulièrement.
Tu te crées un dossier C:\Reference, que tu conserves toujours vide.
Ton dossier C:\MonDossier se remplit, etc. etc.
Et pour nettoyer, tu utilises la ligne de commande suivante :
robocopy C:\Reference C:\Mondossier /S /E /MIR
 
Et hop, magique...ton dossier est intégralement vidé :whistle:

Reply

Marsh Posté le 12-04-2006 à 13:29:55    

Citation :

je te conseille de t'intéresser à Cscript


Bon ben je mis met parce que j'en ai marre de bidouiller avec des batchs et puis ça à effectivement l'air top une fois qu'on maîtrise.
Je suis sur ce site : http://www.interclasse.com/articles/scripts.php pour l'instant et il va falloir que je trouve la documentation complète du langage.
 

Citation :

Pourquoi ne pas faire ça avec Robocopy ?


Je vais peut-être avoir l'air idiot mais je ne connais pas "robocopy".

Reply

Marsh Posté le 12-04-2006 à 13:38:14    

Robocopy est un outil de copie de fichiers de Microsoft. Tu dois pouvoir le trouver facilement. C'est certes une utilisation détournée, mais ça me parait plus simple que de faire des scripts à tire-larigau.

Reply

Marsh Posté le 12-04-2006 à 13:40:59    

je jetterais un coup d'oeil.
Thanks.

Reply

Marsh Posté le 12-04-2006 à 13:46:37    

cscript c'est le nom du moteur. Le langage est appelé le Windows Scripting Host (WSH) utilisant principalement le Visual Basic Script (VBS). Et il est vrai que c'est 100x plus puissant que le batch.
 
La meilleure documentation pour commencer à comprendre ce langage que je connaisse se situe à l'adresse suivante : http://www.descodev.com/documentat [...] ation.aspx


Message édité par piwu le 12-04-2006 à 13:48:03
Reply

Marsh Posté le 12-04-2006 à 13:59:13    

Nickel, merci pour l'adresse : je vais commencer à potasser et j'ai l'impression que j'ai du pain sur la planche (jamais appris de langage et autodidacte).
Mais ça a l'air d'en valoir le coup.

Reply

Marsh Posté le 12-04-2006 à 14:06:22    

tire-larigot [:aloy]
 
niarf, tordue comme je les adore la solution avec Robocopy :D

Reply

Marsh Posté le 13-04-2006 à 16:44:17    

Il va falloir que je jette un coup d'oeil à robocopy moi ....
 
 
 
Histoire de te donner un avant goût de CSCRIPT, voici un exemple.

Le script est le suivant  : (dans un fichier creerbat.vbs par exemple)

 
'--------------------------------------------------------------------------------
' Fichier SCRIPT
'   Executer suivant la syntaxe : cscript creerbat.vbs
'
' Crée le fichier BOB.BAT à partir des fichier AGENTS.TXT et MESSAGE.TXT
'--------------------------------------------------------------------------------
 
 
'--------------------------------------------------------------------------------
' Déclaration des variables
'--------------------------------------------------------------------------------
 
dim i
dim noms
Const ForReading = 1
COnst ForWriting = 2
Const TristateUseDefault = -2
Dim fso
Dim FM, FichierMessage
Dim FA, FIchierAgents
Dim FC, FichierCommande
 
Set WshShell = WScript.CreateObject("WScript.Shell" )
 
 
'--------------------------------------------------------------------------------
' Récupération du Message dans message.txt
'--------------------------------------------------------------------------------
 
Set fso = CreateObject("Scripting.FileSystemObject" )  
Set FichierMessage = fso.GetFile("message.txt" )
Set FM = FichierMessage.OpenAsTextStream(ForReading, TristateUseDefault)
 
Message=FM.Readline
 
FM.close
 
 
'--------------------------------------------------------------------------------
' Récupération de la liste des agents dans AGENTS.TXT
'--------------------------------------------------------------------------------
 
Set FichierAgents = fso.GetFile("Agents.txt" )
Set FA = FichierAgents.OpenAsTextStream(ForReading, TristateUseDefault)
 
for i=1 to 7
 if FA.AtEndOfStream = TRUE then
  i=7
 else
  Agents1 = Agents1+" "+FA.ReadLine  
 end if
next
 
deuxlignes=FALSE
 
for i=8 to 14
 if FA.AtEndOfStream = TRUE then
  i=14
 else
  Agents2 = Agents2+" "+FA.ReadLine
  deuxlignes=TRUE
 end if
next
 
 
 
FA.Close
 
 
'--------------------------------------------------------------------------------
' Création de la commande SEND et du fichier BOB.BAT
'--------------------------------------------------------------------------------
 
commande1="send """+message+""""+Agents1
commande2="send """+message+""""+Agents2
 
Set FichierCommande = fso.GetFile("bob.bat" )
Set FC = FichierCommande.OpenAsTextStream(ForWriting, TristateUseDefault)
 
 
FC.Writeline("cx .users.dd14.dr14.mintrav" )
FC.Writeline(commande1)
FC.Writeline(commande1)
if deuxlignes = TRUE then
 FC.Writeline(commande2)
 FC.Writeline(commande2)
 end if
FC.close
 
 
'--------------------------------------------------------------------------------
' Fin du script
'--------------------------------------------------------------------------------
 
 
A partir des fichiers suivants :
 
AGENTS.TXT (fichier contenant des noms de personnes, ici a1, a2 ...)
a1
a2
a3
a4
a5
a6
a7
a8
 
MESSAGE.TXT (fichier contenant un message text)
voila un test !
 
Le script génère ce fichier : BOB.BAT
cx .users.dd14.dr14.mintrav
send "voila un test !" a1 a2 a3 a4 a5 a6 a7
send "voila un test !" a1 a2 a3 a4 a5 a6 a7
send "voila un test !" a8
send "voila un test !" a8
 
 
Pour lancer le script, la commande est :
cscript creerbat.vbs


Message édité par LoDeNo le 13-04-2006 à 16:46:08
Reply

Sujets relatifs:

Leave a Replay

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