Expert Powershell ici ?
Bonjour,
Est-ce quelqu'un serait dispo pour me donner un coup de main sur powershell ?
J'ai l'arborescence en pièce jointe.
J'aimerais via une commande Powershell, supprimer l'ensemble des fichiers wav se trouvant dans mon arborescence en prenant comme paramètre la date de créations des fichiers.
Suppression des fichiers donc la date de création ayant une date inférieure à 90 jours.
Note : Si le répertoire est vide (plus aucun fichier ou sous répertoire), il doit disparaitre aussi.
Merci
Bonjour,
J'utilise ce genre d'outil pour établir l'arborescence d'un répertoire avec FileSystemObject :

- Le chemin complet est sur la colonne B.
- Sélection indique que le fichier est antérieur à la date 24/08/2023.
- Nb fichiers correspond au nombre de fichiers dans le répertoire.
Code :
Public IndexListe As Integer, IndexLien As Long
Public Fso As Object
Public Liste_Fichiers As Variant
Sub ListerLesFichiers(ByVal Repertoire As String, Optional ByVal ChainesARechercher As String)
Dim I As Long
Dim Debut As String
Dim ShFichiers As Worksheet
Dim TabFichiers As ListObject
Dim LigneFichier As ListRow
If VerifierLeChemin(Repertoire) = False Or Repertoire = "" Then
MsgBox "Saisissez le nom d'un répertoire valide !", vbCritical
Exit Sub
End If
Application.ScreenUpdating = False
Debut = Repertoire
Set Fso = CreateObject("Scripting.FileSystemObject")
IndexListe = 0
ReDim Liste_Fichiers(5, IndexListe)
Set ShFichiers = Sheets("Menu")
With ShFichiers
Set TabFichiers = .ListObjects("TableDesFichiers")
Debug.Print "Nombre de lignes : " & TabFichiers.ListRows.Count
If Range("SuppressionListe") = "Oui" And TabFichiers.ListRows.Count > 0 Then TabFichiers.DataBodyRange.Delete
End With
ListeRecursive Fso.GetFolder(Debut), ChainesARechercher, Range("DateMax") ' A adapter
If IndexListe Then
For IndexListe = LBound(Liste_Fichiers, 2) To UBound(Liste_Fichiers, 2)
Set LigneFichier = TabFichiers.ListRows.Add
With LigneFichier
.Range(1, 1) = Liste_Fichiers(0, IndexListe)
.Range(1, 2) = Liste_Fichiers(1, IndexListe)
.Range(1, 4) = Format(Liste_Fichiers(2, IndexListe), "dd/mm/yyyy")
.Range(1, 5) = Format(Liste_Fichiers(3, IndexListe), "dd/mm/yyyy")
.Range(1, 6) = Liste_Fichiers(4, IndexListe)
.Range(1, 7) = Liste_Fichiers(5, IndexListe)
End With
Set LigneFichier = Nothing
Next IndexListe
End If
For I = TabFichiers.ListRows.Count To 1 Step -1
With TabFichiers.ListRows(I)
If .Range(1, 1) = "" Then .Delete
End With
Next I
If TabFichiers.ListRows.Count > 1 Then
ReconstituerLesLiensHypertextes ShFichiers, TabFichiers.ListColumns(1).DataBodyRange
End If
With ShFichiers
.Activate
.Columns("A:A").EntireColumn.AutoFit
End With
Set Fso = Nothing
Set ShFichiers = Nothing
Application.ScreenUpdating = True
MsgBox "Fin de programme !", vbInformation
End Sub
Sub ListeRecursive(ByVal f As Object, ByVal ChaineATrouver As String, ByVal DateMax2 As Date)
Dim Sf As Object, Fich As Object, Sf2 As Object
For Each Sf In f.SubFolders
For Each Fich In Fso.GetFolder(Sf).Files
If InStr(1, LCase(Fich.Name), ChaineATrouver, vbTextCompare) > 0 Then
ReDim Preserve Liste_Fichiers(5, IndexListe)
Liste_Fichiers(0, IndexListe) = Fich.Name
Liste_Fichiers(1, IndexListe) = Fich.Path
Liste_Fichiers(2, IndexListe) = Fich.DateLastModified
Liste_Fichiers(3, IndexListe) = Fich.DateCreated
If Fich.DateCreated < DateMax2 Then Liste_Fichiers(4, IndexListe) = "X"
Liste_Fichiers(5, IndexListe) = Fso.GetFolder(Sf).Files.Count
IndexListe = IndexListe + 1
End If
Next Fich
ListeRecursive Fso.GetFolder(Sf), ChaineATrouver, Range("DateMax")
Next Sf
End Sub
Sub ReconstituerLesLiensHypertextes(ByVal ShFichiers2 As Worksheet, ByVal AireFichiers As Range)
Dim I As Long, IndexLien As Long
IndexLien = 1
For I = 1 To AireFichiers.Count
With AireFichiers(I)
If .Value <> "" Then
.Hyperlinks.Delete
ShFichiers2.Hyperlinks.Add Anchor:=AireFichiers(I).Offset(0, 2), Address:=AireFichiers(I).Offset(0, 1), TextToDisplay:=CStr(IndexLien)
IndexLien = IndexLien + 1
End If
End With
Next I
End Sub
Function VerifierLeChemin(ByVal Chemin2 As String) As Boolean
Dim Fso As Object
VerifierLeChemin = False
Set Fso = CreateObject("Scripting.FileSystemObject")
VerifierLeChemin = Fso.FolderExists(Chemin2)
Set Fso = Nothing
End Function
Dans le module de l'onglet Menu :
Private Sub BoutonExplorer_Click()
ListerLesFichiers Range("Repertoire"), Range("MotsARechercher")
End Sub