Si comme moi votre dossier PinupSystem est remplis de fichiers ancien inutilisé voici un script Powershell vous permettant de faire un nettoyage rapide !
Code:
# Chemin vers le dossier des tables $cheminTables = "C:\Visual Pinball\Tables"
# Obtenir la liste des tables présentes dans le dossier des tables $tables = Get-ChildItem -Path $cheminTables -Filter *.vpx | ForEach-Object { $_.BaseName }
# Parcourir chaque dossier de médias foreach ($mediaPath in $mediaPaths) { # Obtenir la liste des fichiers média dans le dossier $mediaFiles = Get-ChildItem -Path $mediaPath -File
# Parcourir chaque fichier média foreach ($mediaFile in $mediaFiles) { # Extraire le nom de la table du nom du fichier média $tableName = $mediaFile.BaseName
# Vérifier si le fichier n'est pas "default" et s'il se termine par "xx(SCREENx)" if ($tableName -ne "default" -and $tableName -like "*(SCREEN[0-9])*") { # Extraire la partie avant "01(SCREEN3)" du nom de fichier $prefix = $tableName -replace '[0-9]{1,2}\(SCREEN[0-9]\)$', ''
# Vérifier si le préfixe n'existe pas dans le dossier des tables if ($prefix -notin $tables) { # Si la condition est remplie, supprimer le fichier média Remove-Item -Path $mediaFile.FullName -Force Write-Host "Fichier supprimé : $($mediaFile.FullName)" } } # Vérifier si le fichier n'est pas "default" et s'il ne correspond à aucune table dans le dossier des tables elseif ($tableName -ne "default" -and $tableName -notin $tables) { # Si la condition est remplie, supprimer le fichier média Remove-Item -Path $mediaFile.FullName -Force Write-Host "Fichier supprimé : $($mediaFile.FullName)" } } }
Write-Host "Opération terminée."
Je viens de supprimer des milliers d'images, vidéos et audio en quelques secondes et tous les fichiers qui corresponde à mes tables sont toujours la bien sur !
Le script ne supprimera pas vos fichiers "default" et ne prendra pas en compte les sous dossiers.
Il est tout de même conseillé de sauvegarder votre dossier avant !
Bon nettoyage à vous !
Dernière édition par toprod le Dim 17 Déc 2023 - 0:37, édité 3 fois (Raison : Modification du script pour prise en charge **(SCREEN*))
C'est que tu étais désorganisé - perso des que je vire une table je vire les médias avec - je pense pas avoir une seule image qui ne correspondent pas à une table qui n'existerai plus Il faut certes etre rigoureux...
Avec ton script tu sais combien de fichier il te vire au moins?
Je viens de m'apercevoir qu'il m'a également nettoyé les fichiers vidéos "vides" que j'avais créer pour les loading pinup. Je parle de ces fameux fichiers "blank" que l'on dois insérer avant le fichier de Loading FullScreen en écran 3. C'est bien sur dans le cas ou l'option T-Arc est installé mais que l'on aime malgré tout avoir les loading en plein écran.
Je suis allé un peu vite... donc ma faute si j'ai, pour le moment, "perdu" mes loading.
Il faudrait que je me colle à la création d'un script pour recréer ces fichier vides avec le bon nommage en auto car à la main ca risque d'être long...
Alors... je viens de regarder mes fichiers loading en détails... et c'est plus compliqué que je pensais.
En fait touts mes fichiers "blank" sont encore en places (donc avec le nom exact de la table) mais tous les fichiers Fullscreen on été supprimés. Peut-être donc une correction à faire pour ne pas toucher aux fichiers de ce style : nom de la table + 01(SCREEN3)
Donc dans mon cas, script ou non, c'est mort. Je vais devoir remettre en place chaque fichiers à la main. Mais étant un psychopathe j'ai garder en backup tous les loading donc y-a plus qu'à si mettre.
J'ai modifié le script il exclu maintenant les fichiers qui porte le même nom et qui termine par xx(SCREENx)
La solution pour toi [Vous devez être inscrit et connecté pour voir ce lien] serait de recopier ton dossier en entier et de relancer le script cette fois si uniquement les inutilisé seront supprimé
J'ai également ajouté le dossier "Audio" dans la liste des dossiers
# Obtenir la liste des tables présentes dans le dossier des tables $tables = Get-ChildItem -Path $cheminTables -Filter *.vpx | ForEach-Object { $_.BaseName }
$Compteur = 0
# Parcourir chaque dossier de médias foreach ($mediaPath in $mediaPaths) { # Obtenir la liste des fichiers média dans le dossier $mediaFiles = Get-ChildItem -Path $mediaPath -File
# Parcourir chaque fichier média foreach ($mediaFile in $mediaFiles) { # Extraire le nom de la table du nom du fichier média $tableName = $mediaFile.BaseName
# Vérifier si le fichier n'est pas "default" et s'il se termine par "xx(SCREENx)" if ($tableName -ne "default" -and $tableName -like "*(SCREEN[0-9])*") { # Extraire la partie avant "01(SCREEN3)" du nom de fichier $prefix = $tableName -replace '[0-9]{1,2}\(SCREEN[0-9]\)$', ''
# Vérifier si le préfixe n'existe pas dans le dossier des tables if ($prefix -notin $tables) { # Si la condition est remplie, supprimer le fichier média Remove-Item -Path $mediaFile.FullName -Force Write-Host "Fichier supprimé : $($mediaFile.FullName)" } } # Vérifier si le fichier n'est pas "default" et s'il ne correspond à aucune table dans le dossier des tables elseif ($tableName -ne "default" -and $tableName -notin $tables) { # Si la condition est remplie, supprimer le fichier média Remove-Item -Path $mediaFile.FullName -Force $compteur++ Write-Host "Fichiers supprimé : $($mediaFile.FullName)" } } } Write-Host "Opération terminée : " $compteur " fichiers supprimés" pause