Modification code pour supp fichier dépassant une date
cs_ice1
Messages postés8Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention20 mars 2009
-
20 mars 2009 à 10:43
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
20 mars 2009 à 22:12
bonjour à tous,
voilà j'ai trouvé sur ce forum un super code de mohaxx qui marche vraiment nickel mais j'ai besoin de l'adapter à mes besoins. j'aimerais savoir si vous pouvez me guider un peu :). voilà le script permet de supprimer les dossier et les fichiers (même dans les sous-dossiers) qui sont vieux de 15jours, l'emplacement du repertoire de base est demandé par interface graphique.
en faite moi j'aurais besoin de supprimer les anciens fichiers seulement et non les dossiers (donc toujours recherche dans les sous-répertoires) et que le repertoire de base soit écrit en dur car je veux lancer cette tâche en planification.
j'ai cru que c'était strFoldername qui prenait le chemin mais ça me fait des erreurs, j'ai essayé de mettre en commentaire les lignes que je pensais utile à lancer l'interface graphique mais à chaque fois il me manque des données (toujours des erreurs). j'ai bien compris que c'était plus la dernière partie qui à l'air de correspondre à mes besoins mais je n'arrive pas à le transformer (ou le scinder :p)
voici le code :
'*******************************************************************************
' Script permettant D 'effacer les fichiers Qui date de plus de 15 jours
' Avec interface Graphique
'
'*******************************************************************************
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Selectionner le dossier à traiter :", NO_OPTIONS, ".")
Set objFolderItem = objFolder.Self
strFolderName = objFolderItem.Path
Set colSubfolders = objWMIService.ExecQuery _
("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
& "Where AssocClass = Win32_Subdirectory " _
& "ResultRole = PartComponent")
'Wscript.Echo strFolderName
arrFolderPath = Split(strFolderName, "")
strNewPath = ""
For i = 1 to Ubound(arrFolderPath)
strNewPath = strNewPath & "\" & arrFolderPath(i)
Next
strPath = strNewPath & "\"
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Path = '" & strPath & "'")
For Each objFile in colFiles
Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
'Wscript.Echo objFile.Name & chr (10) & objReadOnlyFile.DateLastModified
if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>15 then
objFile.delete
end if
Next
For Each objFolder in colSubfolders
GetSubFolders strFolderName
Next
Sub GetSubFolders(strFolderName)
Set colSubfolders2 = objWMIService.ExecQuery _
("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
& "Where AssocClass = Win32_Subdirectory " _
& "ResultRole = PartComponent")
For Each objFolder2 in colSubfolders2
strFolderName = objFolder2.Name
'Wscript.Echo
'Wscript.Echo objFolder2.Name
arrFolderPath = Split(strFolderName, "")
strNewPath = ""
For i = 1 to Ubound(arrFolderPath)
strNewPath = strNewPath & "\" & arrFolderPath(i)
Next
strPath = strNewPath & "\"
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Path = '" & strPath & "'")
For Each objFile in colFiles
Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>15 then
'Wscript.Echo objFile.Name & chr (10) & objReadOnlyFile.DateLastModified
objFile.delete
end if
Next
GetSubFolders strFolderName
Next
End Sub
je débute complètement en vbs alors si vous pouviez me parler très simplement lol
merci d'avance
A voir également:
Modification code pour supp fichier dépassant une date
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 20 mars 2009 à 11:08
Bonjour
Remplacer les 2 lignes
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Selectionner le dossier à traiter :", NO_OPTIONS, ".")
par
Set objFolder = objFso.GetFolder("c:\mondossier....en dur")
cs_ice1
Messages postés8Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention20 mars 2009 20 mars 2009 à 11:23
merci pour ta réponse mais cela me donne l'erreur "ligne 13 : cette objet ne gère pas cette propriété ou cette méthode : 'objFolder.Self"
la ligne 13 correspond à : Set objFolderItem = objFolder.Self
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 20 mars 2009 à 12:02
Je ne comprends pas, il s'agit bien d'un VBScript, dans ce cas la déclaration n'est pas obligatoire
Dans la modification proposée, Il n'y a plus d'apparition de objFolder dans le code jusqu'à rencontrer la ligne : For each objFolder in colSubfolders
On a remplace
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Selectionner le dossier à traiter :", NO_OPTIONS, ".")
Set objFolderItem = objFolder.Self
par
Set objFolderItem =objFso.GetFolder(".........")
Au besoin tracer l'avancement avec des command WScript.echo
Mes message d'erreur sont des boites de dialogue de titre "Windows Script Host" par exemple lorsque je mets un nom de répertoire inexistant
cs_ice1
Messages postés8Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention20 mars 2009 20 mars 2009 à 13:14
ça y est ça marche
en faite dans ton 1er message tu m'avais dis de remplacer :
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Selectionner le dossier à traiter :", NO_OPTIONS, ".")
et dans le dernier message tu m'as remis :
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Selectionner le dossier à traiter :", NO_OPTIONS, ".")
Set objFolderItem = objFolder.Self
donc en refaisant bien comme tu m'as dit c'est bon !!
par contre si peux encore abuser un peu de ton aide, pourrais tu m'aider à supprimer la partie qui supprime les dossiers ? je n'aimerais pas avoir de mauvaises surprises ...
si je supprime cette partie es-ce que ce serai bon (cela sans causer de dommage):
strNewPath = ""
For i = 1 to Ubound(arrFolderPath)
strNewPath = strNewPath & "\" & arrFolderPath(i)
Next
strPath = strNewPath & "\"
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Path = '" & strPath & "'")
For Each objFile in colFiles
Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
'Wscript.Echo objFile.Name & chr (10) & objReadOnlyFile.DateLastModified
if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>15 then
objFile.delete
end if
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 20 mars 2009 à 22:12
Bonjour,
Pour info, ton code ne ressemble pas du tout à du .NET (cf la catégorie de ta question), merci de poster dans la bonne catégorie.
De plus, tu ne précise pas le langage utilise (j'espère que c'est du VBS).