Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Script WSH/VBS

S

STéphane

Guest
bonsoir à tous

j'ai bidouillé avec des morceaux de scripts trouvés un script vbs planifiable.
mais j'ai un probllème, la boucle de suppression de fichiers ne marche pas, un fichier est supprimé puis la boucle s'arrête.

si quelqu'un a une idée ??

voilà le script

'ci-dessous, une ligne de commande à mettre dans un raccourci ou dans une tâche planifiée en adaptant les chemins qui menent à l'exécutable script, puis au script appelé et aux paramètres



' C:\WINNT\system32\cscript.exe "C:\Documents and Settings\royers.POEDIWS0003\Bureau\Nessai_Liste.vbs" "C:\Documents and Settings\royers.POEDIWS0003\Bureau\config france" 2


' Fonction pour effacer les fichiers d'un répertoire X vieux de X jours au minimum.
' S'utilise via une ligne de commande en combinaison avec cscript.exe
' Incorporables dans une tâche planifiée
' 1° paramètre = répertoire cible
' 2° paramètre = age minimal

' arguments stockés dans variable objet args, si moins de deux arguments, sortie du script

set args=wscript.arguments
If args.count<2 then
wscript.echo "Syntaxe : OldDelete.vbs <nom de dossier> <age minimal>"
wscript.quit
end If


set fso = CreateObject("Scripting.FileSystemObject")

'construction du nom de fichier concaténé à la date du jour
ficname = "FichiersSupprimés_" & replace(Date,"/","-") & ".txt"

'création du fichier
Set ts = fso.CreateTextFile(ficname, True)

'présentation du contenu du fichier
Line="#Liste des fichiers effacés " & Date
ts.WriteLine Line

'test d'existence du dossier passé en paramètre
dossier=args(0)

if not fso.folderExists(dossier) then
wscript.echo "Le dossier " & dossier & " n'existe pas"
wscript.quit
end if

'contrôle de la numéricité de l'âge minimal passé en paramètre
agemin=args(1)

if not isnumeric(agemin) then
wscript.echo "Valeur d'âge minimal incorrecte"
wscript.quit
end if

set objD=fso.GetFolder(dossier)

for each objF in objD.Files
age=datediff("d",objF.DateCreated,now)

if age>=cint(agemin) then
ts.WriteLine objF.name
fso.deletefile objF.path, true
wscript.echo "Fichier " & objF.Name & " supprimé (" & age & "jours)"
end if
next
ts.close


merci pour tout tuyau

bye & bonne année ;-)
stéphane
 
W

wally

Guest
Bonsoir stéphane et le forum,

Le problème provient de la ligne

wscript.echo "Fichier " & objF.Name & " supprimé (" & age & "jours)

En effet, il n'est pas possible de se référer à objF.Name, étant donné que le fichier a été effacé à la ligne précédente.

Essaye de mettre en commentaire la ligne en question et ton script devrait fonctionner...


Slts

wally
 
J

jon

Guest
bonjour à tous


Merci Wally
C'est bien cela qui faisait planter la boucle.

Et pourtant, je l'avais repéré cette ligne, et l'aait même déplacée lors de certains tests.

Nickel Chrome

Ca met du baume au coeur.


Et en plus il fait beau aujourd'hui ;-)

Bye
 

Discussions similaires

N
Réponses
9
Affichages
3 K
Nikozozo
N
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…