Script de suppression de fichiers temporaires [VBS][RESOLU][SCRIPT] - VB/VBA/VBS - Programmation
Marsh Posté le 17-06-2009 à 11:42:16
Bon comme j'arrive pas à récupérer directement depuis le shell, je me suis orienté sur quelque chose de plus simple :
en gros depuis mon vbs, j'éxécute la commande dir et la stocke dans un fichier de résultats :
dir %windir%\$*$ /A:h /B > d:\scripts\recupdir.txt
l'argument /A:h affiche les éléments cachés, et /B donne des résultats abrégés.
J'ai donc un fichier avec dedans ceci :
$hf_mig$ |
Comment je peux récupérer le fichier ligne par ligne dans mon array en vbs ?
Marsh Posté le 17-06-2009 à 11:59:45
J'ai oublié de préciser que je suis une bille en vbs, et que jusqu'ici je ne fais qu'adapter des scripts déja existant en modifiant quelques fonctions par ci par la.
Comment ça fonctionne l'objet fileSystemObject ?
EDIT : Je vient de trouver ce que c'est que le fso... et j'ai vu un opentextfile dedans.
Marsh Posté le 17-06-2009 à 12:04:02
Par contre je vois pas comment après avoir ouvert mon fichier texte je peux récupérer chaque ligne.
Je vois bien une boucle basée sur un retour du nombre de ligne dans laquelle je rentre dans l'array chaque ligne....
Mais je vois pas quelle commande utiliser pour retourner le nombre de lignes dans le fichier ou récupérer la ligne 1,2,3 etc.
Marsh Posté le 17-06-2009 à 13:01:27
http://devguru.com/technologies/vbscript/14048.asp
http://devguru.com/technologies/vbscript/13990.asp
etc.
en jouant avec Folders, tu pourras sans problème parcourir la liste des $KBxxxxx$ de ton répertoire, et en faire ce que tu veux
Marsh Posté le 17-06-2009 à 15:23:28
En fait j'ai trouvé le moyen de récupérer les ligne d'un fichier texte sur le sujet suivant :
http://forum.hardware.fr/hfr/Progr [...] m#t1360217
Le problème c'est de boucler les lignes.
En gros l'algo que je veux appliquer :
chemin = c:\monfichier.txt |
Une idée pour le bouclage ?
Marsh Posté le 17-06-2009 à 15:47:59
Franchement, tu ferais une boucle sur les items de Folders, ça serait quand même plus propre...
Marsh Posté le 17-06-2009 à 16:24:55
MagicBuzz a écrit : Franchement, tu ferais une boucle sur les items de Folders, ça serait quand même plus propre... |
J'vois pas trop comment faire...
voici ou j'en suis dans mon script pour l'instant :
Code :
|
Pour la boucle je cherche mais j'trouve toujours pas
Marsh Posté le 17-06-2009 à 16:45:03
Un truc du genre :
Code :
|
Marsh Posté le 17-06-2009 à 16:55:37
En gros ton script teste pour chaque sous répertoire du windir si il contient + que 2 caractères, si son premier et dernier caractère est "$" ...
C'est bien ça ?
vais tenter d'adapter ça...
Par contre il y a un problème avec ta variable windir : si on est sous 2000 alors le windir = c:\winnt.
Résultat on se prend le msgbox : "on a un problème la..."
Ya pas moyen de travailler avec %windir% plutôt que de la définir en dur ?
Merci en tout cas pour le temps passé.
Marsh Posté le 17-06-2009 à 16:58:21
ben j'ai essayé, mais pas trouvé pour récupérer %windir%
cependant, fso a un GetSpecialFolder().
j'imagine qu'un truc genre fso.GetSpecialFolder("windir" ) devrait bien aider
Marsh Posté le 17-06-2009 à 16:59:57
trouvé pour le windir :
dim WINDIR
Set WshShell = WScript.CreateObject("WScript.Shell" )
WINDIR = WshShell.ExpandEnvironmentStrings("%WinDir%" )
Marsh Posté le 17-06-2009 à 17:18:39
bon grâce à ton bout de code j'ai pu finir mon script. Le voici :
Code :
|
Et le .bat de résultat :
REM del c:\tmp\*.* /Q /F /S |
J'ai vérifié tout fonctionne. J'enlève les REM et je met le sujet en résolu.
Merci magicbuzz.
Marsh Posté le 17-06-2009 à 17:36:03
J'viens de me rendre compte qu'il manque encore toute une partie à mon script :
Faudrait aussi que je vide les repertoire temp de chaque user.
donc en gros : récupérer pour chaque sous répertoire de c:\documents and settings\ (variable windows ???) le répertoire \local settings\temp et le vider.
Je commence à chercher. Globalement niveau Algo ça devrait pas changer des masses de celui des Kb windows.
Marsh Posté le 18-06-2009 à 10:52:11
Problème résolu, modification du premier post et publication du code.
n'hésitez pas à me faire un retour si on peut améliorer le code.
Bonne journée,
nix.
Marsh Posté le 17-06-2009 à 10:37:01
Bonjour,
J'ai créé un script pour dégager des fichiers temporaires du disque c:\ et ainsi gagner de la place de manière automatique.
MERCI à : magicbuzz
Le code fonctionne de la manière suivante :
Voici le code :
Je mets ici le message original :
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
Bonjour,
Je suis en train de tenter de réaliser un script VBS pour supprimer des répertoires selon une date d'ancienneté.
Globalement le script est OK, sauf qu'on ma demandé de supprimer des répertoires présents dans %windir% et donc ça devient vachement sensible.
En gros je voudrais tester et supprimer tous les répertoires %windir%\$*$
(exemple : $hfmig$ $ntuninstallKB123456$ etc.)
Je peux pas nommer les KB à la main, parce que y'en a trop et que c'est trop long.
Et apparemment le répertoire %windir%\$*$ ça fonctionne pas.
(je stocke dans un array le string : %windir%\$*$)
J'ai fait des tests sous le cmd, ça fonctionne avec la commande dir (dir %windir%\$*$)
Ma question est donc : comment je peux stocker dans un array chaque ligne de résultat de mon dir ?
Une idée ?
Je fais également mes recherches de mon coté.
Quand j'aurai résolu mon problème je ferai un tuto en premier post.
Bonne journée,
Nix.
Message édité par nixnbk le 18-06-2009 à 10:53:07
---------------
I'll feed your skin snacks to my cockatiel!