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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Suppression Recursive et RDMIR, FOR et DIR [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Suppression Recursive et RDMIR, FOR et DIR [RESOLU]

n°833779
4pc
Posté le 27-08-2004 à 10:16:14  profilanswer
 

Bonjour a tous.
La recherche est momentanément indisponible, je me suis donc tapé les sujets des 13 pages de la rubrique a la recherche d'un titre correspondant a ce que je recherche. Une remarque les titres ne sont pas tres tres parlant :)
 
Je souhaiterais supprimé recursivement le contenu d'un répertoire sans le supprimer lui même via un fichier .bat
Le répertoire en question ne contient pas de fichier à la racine, uniquement des répertoires.
 
La commande rmdir (ou rd) permet de faire ça presque parfaitement, seul problème le répertoire racine est également supprimé :(
 

Code :
  1. C:\>help rmdir
  2. Supprime un répertoire.
  3. RMDIR [/S] [/Q] [lecteur:]chemin
  4. RD [/S] [/Q] [lecteur:]chemin
  5.     /S      Supprime tous les répertoires et les fichiers dans le
  6.             répertoire spécifié en plus du répertoire lui-même.
  7.             Utilisé pour supprimer une arborescence.
  8.     /Q      Mode silencieux, ne demande pas de confirmation pour supprimer
  9.             une arborescence de répertoires avec /S.


 
En attendant je fais avec, puis recrée le répertoire derrière, filou mais pas très propre :)
 
J'essaye (après un help for et un help dir) de parcourir le répertoire et d'appliquer la commande Rmdir sur les sous répertoires.

Code :
  1. for %%i IN (`dir repertoireEnQuestion \b`) DO rmdir \q \s %%i
  2. note : ne fonctionne pas :(


 
Je voudrais donc un coup de main pour une syntaxe correcte, la commande dir ne passe pas :/
 
Ou alors si vous avez une autre idée .
 
Dans l'attente,
 
idjiwa.


Message édité par #SubZero le 27-08-2004 à 17:47:28
mood
Publicité
Posté le 27-08-2004 à 10:16:14  profilanswer
 

n°833783
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-08-2004 à 10:18:06  profilanswer
 

4pc a écrit :

Une remarque les titres ne sont pas tres tres parlant :)


c'est pourtant pas faute de gueuler après ceux qui mettent des titres bidons :/

n°833788
4pc
Posté le 27-08-2004 à 10:19:55  profilanswer
 

Ouaip, je pense que ce sont les mêmes qui n'ont pas encore pris l'habitude de taper leurs mots clés dans les forums :) Mais ca vient au bout d'un moment.
Fo laisser venir, en attendant, une idée ?

n°833802
4pc
Posté le 27-08-2004 à 10:30:22  profilanswer
 

une solution intermédiaire,  
 

Code :
  1. dir repertoireEnQuestion /b > fichier.txt
  2. for /F %%i IN (fichier.txt) DO rmdir \Q\S repertoireEnQuestion\%%i


 
Mais la création d'un fichier, c'est couteux (et donc pas optimal)...
 
Une suggestion ?
 
idjiwa.

n°833973
DOD_edge
Posté le 27-08-2004 à 13:05:27  profilanswer
 

c le genre de méthode que j'aurais utilisé et je ne trouve pas ca lourd de passer par la création d'un txt de qq ko...

n°834224
4pc
Posté le 27-08-2004 à 15:00:57  profilanswer
 

Merci pour ton commentaire !
 
Non, je suis d'accord c'est pas excessivement couteux, mais une écriture sur un fichier est toujours plus couteuse qu'un accès direct...non ?  
Le coup de la redirection aurait été préférable, mais je n'ai pas reussi à faire passer le résultat de la commande "dir" comme 'ensemble' pour le for. :)
 
Et pourtant :  

Code :
  1. FOR /F ["options"] %variable IN (`commande`) DO commande [paramètres]


 
Ca devrait pouvoir se faire ... :??:


Message édité par #SubZero le 27-08-2004 à 15:04:04
n°834234
jagstang
Pa Capona ಠ_ಠ
Posté le 27-08-2004 à 15:06:45  profilanswer
 

del /s permet de faire ce que tu veux. testé
 
ça supprimer les fichiers, sans la structure des répertoires


Message édité par jagstang le 27-08-2004 à 15:07:34
n°834265
4pc
Posté le 27-08-2004 à 15:35:21  profilanswer
 

Citation :

del /s permet de faire ce que tu veux. testé  
ça supprimer les fichiers, sans la structure des répertoires

:??: Ce n'est pas ce que je veux !
relis bien plus haut attentivement, je ne veux garder QUE le premier répertoire, tout le reste zouuu..
En gros y a deux solutions que je propose par rapport a ce ti probleme et j'attends des meilleurs solutions si possible.
 
Merci pour ton post.
 
idjiwa.


Message édité par #SubZero le 27-08-2004 à 15:35:38
n°834273
jagstang
Pa Capona ಠ_ಠ
Posté le 27-08-2004 à 15:42:45  profilanswer
 

sinon y'a deltree. je vois pas trop ou est le problème...  
 
si tu veux supprimer tout ce qu'il y a dans C:\temp\truc sans supprimer truc tu fais del C:\temp\truc\*.* pis voilà.  
 
je crois que vous allez chercher un peu compliqué là

n°834295
DOD_edge
Posté le 27-08-2004 à 15:52:53  profilanswer
 

non jag tu n'as pas vu que c les répertoires qu'il veut suppr
or del ou erase ca suppr que des fichiers...

mood
Publicité
Posté le 27-08-2004 à 15:52:53  profilanswer
 

n°834297
jagstang
Pa Capona ಠ_ಠ
Posté le 27-08-2004 à 15:55:45  profilanswer
 

ok. alors je vois que deltree

n°834299
4pc
Posté le 27-08-2004 à 15:56:36  profilanswer
 

Citation :

sinon y'a deltree. je vois pas trop ou est le problème...  
si tu veux supprimer tout ce qu'il y a dans C:\temp\truc sans supprimer truc tu fais del C:\temp\truc\*.* pis voilà.  
je crois que vous allez chercher un peu compliqué là


Prend la peine de lire ce qui est avant s'il te plait. :)
 
Concernant deltree il n'existe plus sous windowsXP (sauf si tu le rajoute).
L'equivalent est la commande rd (ou rmdir).
 
Concernant le del c:\truc\*.*, essaye donc en mettant un répertoire dans truc avant d'executer ta commande, tu verras que le répertoire ne bouge pas :)
Et pour cause , del ne concerne que les fichiers et sans d'autres options comme \s, del ne concerne que les fichiers à la racine du répertoire précisé (dans ton cas, truc).
C'est bien ce que te dis DOD_edge juste au dessus.
 
idjiwa.

n°834303
DOD_edge
Posté le 27-08-2004 à 16:00:55  profilanswer
 

Et si tu fais ca:
 
cd path
rd rep
mkdir rep
 
ou encore
rd path\rep
mkdir path\rep
 
en fait je supprime tout et je crée ton répertoire c pareil que de le vider pour toi, non?

n°834310
4pc
Posté le 27-08-2004 à 16:05:08  profilanswer
 

Citation :

En attendant je fais avec, puis recrée le répertoire derrière, filou mais pas très propre  


C'est ce que je mets dans mon premier post :)
C'etait la premiere solution (bonne idée donc ;) ), mais apres j'ai trouvé mieux, regarde dans les autres posts.
 
idjiwa.


Message édité par #SubZero le 27-08-2004 à 16:05:45
n°834317
DOD_edge
Posté le 27-08-2004 à 16:10:24  profilanswer
 

bah franchement c plus rapide que de lister tous les rep et de tous les supprimer ... pour moi y a pas photo

n°834321
4pc
Posté le 27-08-2004 à 16:11:58  profilanswer
 

Oui mais imagine, tu as mis deux heures a placer tes droits sur le répertoire parent... faut que tu le refasses :)
Mais je suis d'accord avec toi, si tu me trouves le moyen de passer au for le résultat du dir c'est parfait c'est ce qu'il faut... il n'y a dans ce cas plus d'écriture sur fichier !
 
Dans cette solution, ce n'est pas le dir qui est couteux, mais la redirection !

Code :
  1. dir repertoireEnQuestion /b > fichier.txt
  2.   for /F %%i IN (fichier.txt) DO rmdir \Q\S repertoireEnQuestion\%%i



Message édité par #SubZero le 27-08-2004 à 16:14:59
n°834348
DOD_edge
Posté le 27-08-2004 à 16:50:44  profilanswer
 

g trouvé la syntaxe qui accèpte le dir dans le for mais par contre mon rmdir ne marche pas je c pas pkoi:
 
for /F "tokens=*" %%i IN ('dir /a:d /b c:\scanip\') DO (
rd /Q /S c:\scanip\%%i
)
je suis sur que ce code lance bien la commande que tu veux
mais par contre chez moi la commande rmdir refuse de supprimer un répertoire... je c pas pkoi...

n°834350
DOD_edge
Posté le 27-08-2004 à 16:51:39  profilanswer
 

for /F "tokens=*" %%i IN ('dir /a: d /b c:\scanip\') DO (
rd /Q /S c:\scanip\%%i
)
sans espace entre a: et d c pour ce smyley de Me...

n°834351
DOD_edge
Posté le 27-08-2004 à 16:52:40  profilanswer
 

et scanip c le rép en question désolé g laisser mon rep de test

n°834386
4pc
Posté le 27-08-2004 à 17:22:33  profilanswer
 

C'est exactement ce que je veux .. mais y a t'il une precision pour la syntaxe ?
Ca ne marche pas pour moi :/
Enfin quand je dis que ca ne marche pas, l'évaluation se fait bien, c'est à dire qu'il lance bien le rd (ou rmdir pareil) /q /s sur le repertoire (les bons) mais me sort "fichiers spécifiés introuvables" derrière.. toi aussi ? Bizarre je ne vois pas ou il cherche des fichiers... :(

Code :
  1. for /F "tokens=*" %%i IN ('dir /a:d /b root\') DO rmdir /Q /S root\%%i

Le /a:d n'est pas nécessaire dans mon cas car c'est un répertoire qui ne contient pas de fichier a la racine. Un détail.


Message édité par #SubZero le 27-08-2004 à 17:29:06
n°834408
DOD_edge
Posté le 27-08-2004 à 17:42:57  profilanswer
 

oki g trouvé
ca ne marche que si t nom de dossier n'ont pas d'espace  
exemple crée c:\test et fait rd c:\test
ca marche  
or crée c:\te st et fait rd c:\te st
la il te met l'ereur fichier introuvable
donc ca marche que si t fichier on tpas d'espce dans leur nom
 
for /F "tokens=*" %%i IN ('dir /a:d /b path') DO (
rd /Q /S path\%%i
)
je cherche la manip pour les espaces on doit pouvoir y arriver...

n°834409
4pc
Posté le 27-08-2004 à 17:43:49  profilanswer
 

en mettant des guillemets ! C'est bon ca marche !
NIKEL
merci DOD, ca le fait ... et c'est moins couteux que l'écriture dans un fichier ;)

Code :
  1. for /F "tokens=*" %%i IN ('dir /a:d /b root') DO rmdir /S /Q root\"%%i"


Message édité par #SubZero le 27-08-2004 à 17:46:56
n°834418
DOD_edge
Posté le 27-08-2004 à 17:53:13  profilanswer
 

oki c cool merci pour les "" j'y avais pas encore pensé...

n°834421
DOD_edge
Posté le 27-08-2004 à 17:54:25  profilanswer
 

sinon supprimer le contenu de root c pas un peu brutal?

n°834422
4pc
Posté le 27-08-2004 à 17:56:33  profilanswer
 

C'etait pour l'exemple .. je ne compte pas l'utiliser sur ce répertoire :)

n°990138
ludolitali​ano
Posté le 22-02-2005 à 17:12:49  profilanswer
 

[quote=833779,0,1,80550]FOR /F ["options"] %variable IN (`commande`) DO commande [paramètres][/quote]
Je cherche la liste de ces options; je cherche à faire la même chose mais avec les fichiers qui ont été modifiés à une certaine date (il y a plus d'un mois).


Message édité par ludolitaliano le 22-02-2005 à 17:13:34
n°2188859
Kx2000
Posté le 03-05-2013 à 22:45:59  profilanswer
 

Je me permet de déterrer ça parce que je chercher à faire quelque chose de similaire.  
 
Bonjour d'abord...
 
J'ai un dossier qui contient plusieurs sous dossiers contenant chacun 1 dossier identique que je souhaite supprimer ainsi que des fichiers à conserver.
 
J'ai essayé la commande cité plus haut. (adaptée bien sur) mais ça ne fonctionne pas, de plus, je ne comprends pas ce que je fais.
 
J'ai compris les grandes lignes de la commande FOR IN et DO  
Je vois bien ce que je dois faire après le IN (grosso modo) et le DO mais je ne comprends pas du tout le début... le FOR...
 
Quelqu'un pourrait m'expliquer ça ? et éventuellement m'aider à créer ma commande pour supprimer ce dossier ?
 
Merci !

mood
Publicité
Posté le   profilanswer
 


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

  Suppression Recursive et RDMIR, FOR et DIR [RESOLU]

 

Sujets relatifs
Include et EasyPHP [resolu][PHP] URL Rewriting et formulaires [résolu]
[C++] IIDFromString erreur... [résolu]récupérer l'état de la souris depuis le driver Linux [résolu]
[résolu] problème avec iframe[php]Image de protection contre les spam bots [résolu]
comment faire pour...[résolu] [ajout d'1 lien avec tout le descriptif]Problème avec un boucle For Each et une fonction recursive
[php]problème avec la fonction logique || [resolu] 
Plus de sujets relatifs à : Suppression Recursive et RDMIR, FOR et DIR [RESOLU]


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