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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Détruire automatiquement des dossiers au moyen d'un .bat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Détruire automatiquement des dossiers au moyen d'un .bat

n°623652
ydecreux
Posté le 28-01-2004 à 11:41:33  profilanswer
 

Je voudrais écrire une commande qui détruise automatiquement tous les dossiers dont le nom commence par 225 dans un dossier et dans ses sous-dossiers, au moyen d'une commande batch car je n'ai pas d'outil de compilation pour écrire des programmes.
 
L'équivalent avec des fichiers serait :
del C:\mondossier\225* /s
mais cela ne marche pas avec des dossiers.
 
Merci d'avance pour votre aide si vous avez une idée.
 
Yvan

mood
Publicité
Posté le 28-01-2004 à 11:41:33  profilanswer
 

n°623698
ydecreux
Posté le 28-01-2004 à 12:38:33  profilanswer
 

Je précise que je peux obtenir la liste des dossiers à supprimer au moyen de la commande :
 
dir c:\mondossier\225* /s > toto
 
mais ensuite je ne sais pas comment exploiter l'information contenue dans toto pour qu'il détruise les dossiers trouvés.
 
A la limite si vous avez une idée avec un autre langage que batch je suis preneur aussi tant que c'est abordable pour un newbie.

n°623701
Carbon_14
Posté le 28-01-2004 à 12:42:14  profilanswer
 

Dans les vieux DOS, Deltree servait à détruire les dossiers (et sous-dossiers) (mais je sais plus si devaient être vide avant, je croispas)

n°623705
ydecreux
Posté le 28-01-2004 à 12:51:46  profilanswer
 

Malheureusement je suis sous Win 2000 et deltree n'existe plus. En plus je ne veux pas lui faire détruire un dossier précis mais un ensemble de dossiers à chercher dans l'arborescence.

n°624180
Carbon_14
Posté le 28-01-2004 à 18:32:04  profilanswer
 

J'avais pas remarqué (suis encore sous DOS 6.22).
Sous Win2k, help del semblerait (? option à ajouter) qu'on peut spécifier un nom de répertoire. A tester....
Je viens de tester avec répertoire juste créé et avec deux fichiers dedans. Ca marche une fois répondu Oui pour effacer.

n°624197
ydecreux
Posté le 28-01-2004 à 18:51:25  profilanswer
 

La commande del marche bien pour les dossiers mais seulement pour détruire un dossier précis et non un dossier défini de façon générique.
 
Par exemple si j'écris :
del C:\mondossier\225a
le programme détruit le dossier 225a, mais si j'écris
del C:\mondossier\225* il ne détruira pas C:\mondossier\225a et a fortiori il ne détruira pas non plus C:\mondossier\sousdossier\225b
 
alors que j'aurais voulu une commande qui détruise tous les dossier commençant par 225 quelle que soit la position dans l'arborescence.
 
Mais bon, peut-être que ce n'est pas possible et dans ce cas je continuerai à le faire à la main :(

n°624221
Carbon_14
Posté le 28-01-2004 à 19:38:20  profilanswer
 

Y a peut-être moyen, peut-être via un fichier "liste" mais sais pas (encore) comment. Y a des fois des exemples sur le site de gestion "sophistiquée" en .bat . Semblerait donc qu'un nom générique de répertoire ne soit pas accepté.
 
Je ferais qq essais pr voir si je retrouve les liens vers sites d'infos (y a des trucs qu'on ignore quand on a pratiqué DOS de façon superficielle (à part %1 %2 Echo machin ...))

n°624291
Carbon_14
Posté le 28-01-2004 à 21:13:03  profilanswer
 

Si en utilisant la commande  
dir c:\mondossier\225* /s /b (le B permet ne ne pas avoir toutes les fioritures de date, taille, etc..) on n'a que les chemins et noms, en QBASIC, on peut lancer des commandes DEL (faudra que je teste). Si libellé complet, ça doit aller, le pb est le nom générique.
 
Sinon, avec explorateur, chercher "225*.*", ctrl+A pr tout sélectionner, supprimer puis zou, plus rien.
 
Rq : sur mon W2k, deltree existe encore, il n'est pas dans l'aide help, faut faire deltree /?
Si on est ds le répertoire "maître", on peut faire  
for /D %f in (225*.*) do deltree %f  marche mais c'est pas récursif (/D pour directory, sinon que fichiers)
dir 225*.* /S | deltree marche pas car pas pipable, dommage
 
Ne sachant pas comment lire le contenu d'un fichier depuis batch, on n'avance pas...

n°624293
*syl*
--> []
Posté le 28-01-2004 à 21:18:24  profilanswer
 

rd /s 255*  
 
?

n°624309
Carbon_14
Posté le 28-01-2004 à 21:44:11  profilanswer
 

Je viens d'essayer mais il comprends pas... 225* ne trouve pas les 2251 2252 2253 ...
 
J'ai regardé sur http://www.microsoft.com/windows20 [...] ntcmds.htm , on peut, quand la commande le permet, lire le contenu d'un fichier pour action par < (comme sort)
mais deltree n'en veut pas (pb de paramètre, ..)
ni rmdir /s (dommage), le piping non plus
rmdir /s < fichier ou deltree < fichier pas bon.

mood
Publicité
Posté le 28-01-2004 à 21:44:11  profilanswer
 

n°624311
ObsydianKe​nobi
peloton suicida
Posté le 28-01-2004 à 21:50:47  profilanswer
 

carbon_14 a écrit :

Si en utilisant la commande  
dir c:\mondossier\225* /s /b (le B permet ne ne pas avoir toutes les fioritures de date, taille, etc..) on n'a que les chemins et noms, en QBASIC, on peut lancer des commandes DEL (faudra que je teste). Si libellé complet, ça doit aller, le pb est le nom générique.
 


 
Et en faisant  
 

Code :
  1. dir c:\mondossier\225* /s /b >> c:\listedir.txt


 
Ca génère un TXT avec la liste dedans, il fout des "RMDIR" devant chacun (copier/coller powaa) et l'enregistre en .bat [:mrbrelle]
 
Non?
 
 
EDIT: faire l'équivalent avec DEL /Q avant pour supprimer le contenu


Message édité par ObsydianKenobi le 28-01-2004 à 21:54:07

---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
n°624556
Carbon_14
Posté le 29-01-2004 à 09:12:10  profilanswer
 

Ca serait bien en "automatique" : commande lancée, action exécutée, fini.

n°625749
aigles
Posté le 30-01-2004 à 10:07:07  profilanswer
 

J'ai testé la commande suivante sur un de nos serveurs Window 2000 et elle fonctionne.
 


FOR /R %r IN ('DIR /A:D /S /B 225*') DO DEL /S /Q %r


---------------
Jean Pierre.
n°626860
ObsydianKe​nobi
peloton suicida
Posté le 31-01-2004 à 11:53:42  profilanswer
 

aigles a écrit :

J'ai testé la commande suivante sur un de nos serveurs Window 2000 et elle fonctionne.
 


FOR /R %r IN ('DIR /A:D /S /B 225*') DO DEL /S /Q %r




 
[:obsydiankenobi] j'ai commencé à regarder avec un FOR, mais j'ai pas eu le courage de tester le DEL dedans [:mrbrelle]  :whistle:


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
n°697810
ydecreux
Posté le 12-04-2004 à 19:14:36  profilanswer
 

Je viens seulement de faire le test sur mon ordi perso sous XP (j'avais oublié d'activer la notification par email). Pour que ça marche il faut faire quelques modifications cosmétiques mais l'idée fonctionne. Le programme devient :
 

Code :
  1. dir /a:d /s /b D:\_Yvan\225* > toto
  2. for /f %%r in (toto) do rd %%r /q
  3. for %%r in (toto) do del %%r /s /q


 
Merci beaucoup pour votre aide et désolé de ma réponse tardive.
 
Yvan


Message édité par ydecreux le 12-04-2004 à 19:16:13
n°710752
Francisboo​st
Posté le 28-04-2004 à 13:13:40  profilanswer
 

je vois pas pourquoi tu n'utilise pas deltree a la place de ton script sous win2000
"deltree 225*" fonctionne tres bien et en tapant "deltree /?" tu auras toute les options desirées, de plus deltree tu le trouve partout, (disquette de demarrage win98 par exemple ou ici: http://gilles.ronsin.free.fr/fichi [...] LTREE.EXE) tu peux meme trouvé un equivalent sur le site de freedos (gratuit)
ciao!

n°718320
ydecreux
Posté le 07-05-2004 à 11:04:50  profilanswer
 

Le problème n'était pas de pouvoir détruire un dossier mais surtout de rechercher tous les dossiers 225* de l'arborescence, ce que deltree ne fait pas si on stipule juste deltree 225* (il faut lui donner l'adresse exacte du dossier à détruire). Merci toutefois pour la suggestion :) .

n°718345
ydecreux
Posté le 07-05-2004 à 11:18:50  profilanswer
 

ObsydianKenobi a écrit :

[:obsydiankenobi] j'ai commencé à regarder avec un FOR, mais j'ai pas eu le courage de tester le DEL dedans [:mrbrelle]  :whistle:


 
En fait tu as bien fait car il me semble que ces commandes DOS ne sont pas très portables. Sur un autre ordi avec win 2000 ma formule ne fonctionnait pas donc j'ai essayé l'autre et le temps de réagir j'ai perdu 100 Go de données :( . Je crois que je vais continuer à la main.

n°718444
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-05-2004 à 11:52:08  profilanswer
 

Il ne faut pas oublier que sous Win9x c'est du DOS 7 alors que sous NT/2000/XP c'est juste une ligne de commande qui a une syntaxe proche du DOS.
Donc c'est "normal" qu'il y ait des différences (par ex "deltree" qui n'existe pas, mais où "del" possède de quoi supprimer des dossiers)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°729322
ydecreux
Posté le 17-05-2004 à 17:19:39  profilanswer
 

En fait le programme ne marchait pas parce que j'utilisais la première des lignes de commande :

Code :
  1. for /f %%r in (toto) do rd /q


qui ne fonctionne qu'avec des dossiers vides (ce qui était le cas lors de mes tests). En fait il suffisait d'écrire :

Code :
  1. for /f %%r in (toto) do rd /s /q


Mes affirmations concernant la non-portabilité du DOS de win 2000 étaient donc infondées. Désolé.


Message édité par ydecreux le 17-05-2004 à 17:20:13
n°745079
gatsu35
Blablaté par Harko
Posté le 30-05-2004 à 09:45:37  profilanswer
 

yen a ils sont po compliqués !! lol
juste un rd /S /Q suffit de supprimer tous les répertoires récursivement

mood
Publicité
Posté le   profilanswer
 


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

  Détruire automatiquement des dossiers au moyen d'un .bat

 

Sujets relatifs
Actualisation d'une gallerie d'image automatiquement chaque semaine[html] iframe qui s'adapte automatiquement a la taille du contenu ?
Fermer une fenêtre DOS automatiquementtuto sur la manipulation et la création de fichiers et dossiers
Cree des cles qui s'incrementent automatiquement sous SQL server 2000lancer un batch avec les options "cmd /V:ON" automatiquement ?
Recherche: couper un fichier pdf automatiquement en plusieurs petitsjava : etat actuel du marché et developpement a court/moyen termes?
ORACLE detruire data avant import[PHP] détruire toutes les var d'une session sauf certaines...
Plus de sujets relatifs à : Détruire automatiquement des dossiers au moyen d'un .bat


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