Forum Clubic

[VBS] Delete de fichiers dans répertoires et sous répertoires

Bonjour à tous

J’aurai besoin d’aide, étant novice en programmation vbs.
Je cherche a faire une function qui efface des fichiers dans des folders et sous folders, avec en parametres le répertoire initial et le nom de fichier, ou une partie du nom de fichier, ou un caractere générique…

ex : Mydelfile (“C:\temp”,“Test.t*”) ou
Mydelfile (“C:\temp”,“Test.")
ou
Mydelfile (“C:\temp”,"Te
.t*”)
ou
Mydelfile (“C:\temp”,".")
ou
Mydelfile (“C:\temp”,".")
Vous voyez ou je veux en venir.

J’ai bien commencer mais c’est pas ca !

Const DeleteReadOnly = True
Const CopyOverwrite = True
Dim oShell, oFso, sAllUsers, sSystemDrive, bStatus
Dim sEntry, slogFile, sfolder,ofolder, cfiles,ofile, csubfolders,osub

Function DeleteFiles(sSearch, sFolder, bRecurse)
Set oFolder = oFso.GetFolder(sFolder)
Set cFiles = oFolder.Files
If sSearch = “.” or sSearch="." then
oFSO.DeleteFile(sFolder&"*.*"), DeleteReadOnly
Else

'C’est à partir de la que je flanche !!!
'Comment faire avec une partie du nom de fichier en caratere générique ?

If Ubound(gaValue)>0 Then
For i = LBound(gaValue) to UBound(gaValue)-1
log "Fichier trouvé dans le répertoire: " & gaValue(i)
Next

Next
End If

Set cSubFolders = oFolder.SubFolders
If bRecurse Then
For Each oSub in cSubFolders
DeleteFiles sSearch, oSub.Path, bRecurse
Next
End If
End Function

MErci de votre aide eventuelle !

[cpp]
Public Sub DelTree(ByVal vDir As Variant)
Dim FSO, FS

Set FSO = CreateObject(“Scripting.FileSystemObject”)
FS = FSO.deletefolder(vDir, True)

End Sub
[/cpp]

Merci de ta réponse

Mais ce n’est pas le sujet de ma question.
Je ne souhaite pas detruire l’arborescence, mais seulement quelques fichiers bien spécifiques.
Et puis tant qu’a créer une procedure ou fonction autant qu’elle serve a toutes sortent de fichiers, d’ou l’emploi de caractere génériques.

Merci

cette fonction ça pourrait te donner un piste… :]
[cpp]
Public Sub FindFile(ByVal sFol As String, sFile As String)
Dim FSO As New FileSystemObject
Dim tFld As Folder, FileName As String

Set fld = FSO.GetFolder(sFol)
FileName = Dir(FSO.BuildPath(fld.Path, sFile), vbNormal Or vbHidden Or vbSystem Or vbReadOnly)
While Len(FileName) <> 0
    ...
    FileName = Dir()
    DoEvents
Wend

If fld.SubFolders.Count > 0 Then
    For Each tFld In fld.SubFolders
        DoEvents
        FindFile tFld.Path, sFile
    Next
End If

End Sub
[/cpp]

Merci mais a priori, si je me trompe pas c’est du VB ! et la fonction dir() n’est pas compatible avec VBS !

C’etait effectivement une bonne piste ! :slight_smile:

Merci