Suppression Recursive et RDMIR, FOR et DIR [RESOLU] - Shell/Batch - Programmation
Marsh Posté le 27-08-2004 à 10:18:06
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
Marsh Posté le 27-08-2004 à 10:19:55
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 ?
Marsh Posté le 27-08-2004 à 10:30:22
une solution intermédiaire,
Code :
|
Mais la création d'un fichier, c'est couteux (et donc pas optimal)...
Une suggestion ?
idjiwa.
Marsh Posté le 27-08-2004 à 13:05:27
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...
Marsh Posté le 27-08-2004 à 15:00:57
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 :
|
Ca devrait pouvoir se faire ...
Marsh Posté le 27-08-2004 à 15:06:45
del /s permet de faire ce que tu veux. testé
ça supprimer les fichiers, sans la structure des répertoires
Marsh Posté le 27-08-2004 à 15:35:21
Citation : del /s permet de faire ce que tu veux. testé |
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.
Marsh Posté le 27-08-2004 à 15:42:45
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à
Marsh Posté le 27-08-2004 à 15:52:53
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...
Marsh Posté le 27-08-2004 à 15:56:36
Citation : sinon y'a deltree. je vois pas trop ou est le problème... |
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.
Marsh Posté le 27-08-2004 à 16:00:55
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?
Marsh Posté le 27-08-2004 à 16:05:08
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.
Marsh Posté le 27-08-2004 à 16:10:24
bah franchement c plus rapide que de lister tous les rep et de tous les supprimer ... pour moi y a pas photo
Marsh Posté le 27-08-2004 à 16:11:58
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 :
|
Marsh Posté le 27-08-2004 à 16:50:44
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 /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...
Marsh Posté le 27-08-2004 à 16:51:39
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...
Marsh Posté le 27-08-2004 à 16:52:40
et scanip c le rép en question désolé g laisser mon rep de test
Marsh Posté le 27-08-2004 à 17:22:33
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 :
|
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.
Marsh Posté le 27-08-2004 à 17:42:57
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 /b path') DO (
rd /Q /S path\%%i
)
je cherche la manip pour les espaces on doit pouvoir y arriver...
Marsh Posté le 27-08-2004 à 17:43:49
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 :
|
Marsh Posté le 27-08-2004 à 17:53:13
oki c cool merci pour les "" j'y avais pas encore pensé...
Marsh Posté le 27-08-2004 à 17:56:33
C'etait pour l'exemple .. je ne compte pas l'utiliser sur ce répertoire
Marsh Posté le 22-02-2005 à 17:12:49
[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).
Marsh Posté le 03-05-2013 à 22:45:59
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 !
Marsh Posté le 27-08-2004 à 10:16:14
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é
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.
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