Rechercher des dossiers et les supprimer - Shell/Batch - Programmation
Marsh Posté le 08-10-2005 à 10:39:21
Pourrais-tu indiquer, s'il te plait, sous quel système d'exploitation, et avec quel shell s'il s'agit d'Unix ?
Marsh Posté le 08-10-2005 à 10:52:45
olivthill a écrit : Pourrais-tu indiquer, s'il te plait, sous quel système d'exploitation, et avec quel shell s'il s'agit d'Unix ? |
Oups, désolé...
W2k et XP
Marsh Posté le 08-10-2005 à 11:39:56
Pour obtenir la liste de tous les dossiers en dessous de C:\Scripts, j'itilise le script suivant :
Code :
|
Ces lignes sont mise dans un fichier "searchfolder.vbs" que l'on exécute en cliquant dessus, ou en tapant "cscript.exe searchfolder.vbs" depuis une fenêtre DOS.
En l'adaptant un peu, j'obtiens le script pour supprimer tous les dossiers intitulés "toto" qui se trouvent en dessous de "c:\test":
Code :
|
"Subfolder.Path" renvoie le nom du dossier avec le chemin complet.
"Subfolder.name" renvoie le nom du dossier sans le chemin.
Edit : J'avais oublié qu'il faut deux antislashs pour que le message en affiche un dans une boite de code.
Marsh Posté le 10-10-2005 à 00:06:08
Salut,
je m'incruste parce que justement je voulais faire exactement la même chose sur un serveur NT4 pour supprimer des dossiers Profils.
olivthill, je viens de faire un petit test sur mon W2000, et ça marche nickel!!
Y a t-il moyen d'y apporter deux petites modifications:
1) Ne pas supprimer le dossier "toto" mais juste son contenu
2) A chaque dossier "toto" trouvé, une petite fenêtre s'ouvre pour confirmer. On clique ok et hop au suivant. Comme j'aurais plus de 800 dossiers à supprimer, peut-on passer outre cette fenêtre?
Marsh Posté le 10-10-2005 à 09:11:43
Merci pour ta réponse olivthill. Je teste ça et reviens te donner mon feedback (je suis newbie en vbs).
Marsh Posté le 10-10-2005 à 12:08:51
Voici une version adaptée pour toi, Ramkin.
Code :
|
D'abord, le dossier "toto" est recherché récursivement sous c:\test.
Puis s'il est trouvé, son contenu est supprimé avec demandes de confirmation. Il est bien sûr possible de mettre les demandes de confirmation en commentaire en plaçant une apostrophe en début de ligne dans le code.
Marsh Posté le 10-10-2005 à 14:48:05
Merci beaucoup pour ton aide olivthill. J'ai tâtonné un petit peu au début car ton script (modifié avec mes valeurs) ne renvoyait aucun message. Puis je me suis aperçu qu'il fallait respecter la case.
Maintenant, je teste la solution que tu as soumis à ramkin car elle m'intéresse également ! Je cherche surtout à supprimer la confirmation de suppression.
Marsh Posté le 10-10-2005 à 19:43:11
Alors moi je dis:
Citation : olivthill Président!! |
Ca marche impec! Et j'ai même compris comment supprimer la boite de dialogue.(qui d'ailleurs est très intelligement faite en rappelant le chemin du ficheir à supprimer.. )
10 000²² merci olivthill!!
Marsh Posté le 11-10-2005 à 10:57:49
C'est encore moi!!
olivthill, dès que j'abuse tu le dis....
Et dans la même genre d'idée:
1) Ca marche super sur un poste. Mais est-ce possible en réseau? Imagine, que des stations XP Pro dont il faut supprimer le même dossier. Problème, je ne vois pas bien quel chemin indiquer en place de "c:\test"
2) Et si au lieu de supprimer "toto" je voulais y copier "tata" dedans?
Ca ne serait pas juste ces lignes qu'il faudrait changer?
Citation : If (Subfolder.name = subfolder_a_chercher) Then |
Marsh Posté le 11-10-2005 à 11:05:34
Cela me plait de répondre aux questions, donc si je peux, no problemo.
1) En réseau, je ne sais pas, désolé.
2) Oui, il faut remplacer les lignes citées, qui contiennent notamment DeleteFolder, par une ligne faisant appel à
FSO.CopyFile source, destination[, overwrite] |
Le mot overwrite est optionnel, c'est pour permettre d'écraser un fichier qui existe déjà.
Pour copier un dossier, c'est pareil avec CopyFolder à la place de CopyFile
Marsh Posté le 11-10-2005 à 14:08:26
Et encore une fois, superbe!!!!
Par contre je n'ai pas mis la commande [, overwrite] et ça overwrite quand même.
Merci bien pour ton aide, je vais garder ces scripts TRES précieusement.
Si jamais il te vient une idée pour faire ça au travers de tout un réseau, je me ferais un plaisir d'être ton bêta-testeur..
Marsh Posté le 17-10-2005 à 11:08:39
bonjour lé gars je programme en vbscript mais lé fichiers que j'attaque sont codés en Unicode connaissez vous quel quelques choses
qui peu m'aider pour lé transformer en ANSI
Marsh Posté le 20-10-2005 à 22:42:23
olivthill......
Je crois que j'ai un gros problème de syntaxe....
Normalement, cette petite fonction récurssivce est censée copier un fichier dans tous les dossiers "toto"
Mais ça coince là où c'est en gras à mon avis...
Citation : Set fso = CreateObject("Scripting.FileSystemObject" ) |
Marsh Posté le 21-10-2005 à 11:50:59
Bonjour Ramkin,
Je crois qu'il faut enlever les guillemets et essayer
Code :
|
Marsh Posté le 21-10-2005 à 19:49:27
Merci olivthill pour cette réponse rapide.
Mais ça marche pas.....
la ligne 9 caractère 12 est justement le début de cette commande.
Marsh Posté le 21-10-2005 à 21:20:02
Le message sur l'image indique "permission refusée". Cela siginifie que l'utilisateur (1) n'a pas le droit de copier le fichier (2) dans le dossier (3). Le problème est probablement dû à une protection du dossier (3), mais peut aussi venir des deux autres facteurs (1) et (2).
Marsh Posté le 21-10-2005 à 22:22:47
olivthill a écrit : Le message sur l'image indique "permission refusée". Cela siginifie que l'utilisateur (1) n'a pas le droit de copier le fichier (2) dans le dossier (3). Le problème est probablement dû à une protection du dossier (3), mais peut aussi venir des deux autres facteurs (1) et (2). |
Oui mais c'est bien ça qui est bizarre.....C'est sur mon pc à moi, avec un seul utilisateur, administrateur, grand propriétaire de tout, j'ai nommé MOI!
Tu es absolument certain de la syntaxe?
Marsh Posté le 22-10-2005 à 00:37:49
Je viens de faire un essai pour régler cette histoire de permissions.
A la première itération, le sub se retrouve dans le dossier C:\test\toto, et c'est alors la valeur de la variable un_sousdossier.
En mettant comme ligne de code:
Citation : FSO.CopyFile "C:\fichier_a_copier.txt", "c:\test\toto\" |
aucun problème de "permission"....et ça fonctionne bien.
Donc dans :
Citation : fso.CopyFile "C:fichier_a_copier.txt", un_sousdossier.Path |
c'est la référence à un_sousdossier.Path qui n'est pas comprise....
Marsh Posté le 22-10-2005 à 09:43:53
La solution est :
fso.CopyFile "C:\\fichier_a_copier.txt", un_sousdossier.Path & "\\" |
Cettte fois-ci, j'ai pris le temps de tester, et cette nouvelle ligne marche chez moi.
Le problème n'était causé par un manque de permission, mais par un nom de dossier ne se terminant pas par un anti-slash "\". Pour le constater, on peut faire un test avec Wscript.Echo un_sousdossier.Path. Donc, il fallait ajouter & "\\" (en VB, c'est le "&" qui permet d'ajouter une chaine à une autre, par exemple "bonjour, " & "tout le monde" ).
Excuse-moi de ne pas m'être aperçu plus tôt du problème de l'anti-slash.
Marsh Posté le 22-10-2005 à 14:04:25
Encore une fois, bravo!
J'avais aussi pensé à l'anti-slah mais j'avais essayé un_sousdossier\ et "un_sousdossier\"
Donc tout est parfait!!
Et encore une fois merci.
olivthill a écrit : |
[Mode Dark Vador=ON]
Excuses acceptées général.
[Mode Dark Vador=OFF]
Marsh Posté le 17-05-2006 à 16:54:44
et c'est quoi la commande à la place de "deletefile" pour:
1. ouvrir
2. déplacer à un autre emplacement
merki de vos reponses
Marsh Posté le 02-06-2006 à 09:18:07
Salut à tous. Et loué soit olivthill qui a réondu à mon problème sans que j'ai besoin de demander
Mais suite à ça justement j'avais une question à poser à olivthill comme à tous ceux qui peuvent me répondre.
J'ai rentré mon code pour la suppression de fichiers dans mon_programme_script.vbs, j ai fait le test tout marche.Mais je ne sais comment faire pour tester la date du fichier cible qui sera supprimer plus précisément le mois.(je ne parle pas du dossier car je ne veut pas supprimer les dossiers)Parce qu'en fait je dois faire un programme qui teste les date d'un fichier avec la date d'aujourd'hui, par exemple, et si le fichier est vieux de + d'un mois ca me le vire.
(Par contre j'annonce je suis un gros noob en VBs et comme apr hasard jdois faire un script alors je galère.)
J'en viens à ma question; comment puis-je faire pour récupérer dans une variable la date de mon fichier????Pour après la comparer avec la date d'aujourd'hui? Sachant que je n'ai besoin que du mois.
(Je sais c'est fouilli mais je c'est pas comment synthétiser la question )
P.S : Ne me donnez pas de lien internet svp, mais je demande pas qu'on me mache le travail non plus, juste me donner la commande qui appel la date du jour et la commande pour avoir la date du fichier.Après j'ai déjà fait l'algorithme donc je saurais faire mon script (normalement).
Marsh Posté le 06-06-2006 à 14:25:58
up
Marsh Posté le 08-06-2006 à 15:14:28
mon probleme est résolu je n'ai eu besoin de personne
Marsh Posté le 08-10-2005 à 08:50:10
Bonjour tout le monde,
Je cherche une solution en batch afin d'effectuer une recherche spécifique sur une partition.
Je souhaite rechercher tous les dossiers intitulés "toto" et qu'à la suite de cette recherche, ces dossiers "toto" (et leur contenu) soit effacés.
Quelqu'un aurait-il une solution à me proposer ?
Un grand merci par avance.
---------------
Si ça continue, va falloir qu'ça cesse !!!