J'ai un dossier contenant des fichiers .jpg. Je les associe avec des produits dans une base de données d'accès. Une des sources pour les produits fournit ces fichiers .jpg mais ils ne vous permettent pas de télécharger facilement seulement les images que vous utilisez actuellement. Par conséquent, j'ai trouvé un script PowerShell pour supprimer les fichiers dont je n'ai pas besoin.Powershell Script pour supprimer les fichiers ne figurant pas dans une liste avec barre de progression
$exclusions = Get-Content C:\Users\office\Desktop\ExcludedPhotos.txt
dir -rec M:\PhotoDirectory\PhotoFolder | Where-Object {$exclusions -notcontains $_.name } | Remove-Item
Crédit @ x0n Powershell script to delete files not specified in a list
Et ça fonctionne très bien! mais le problème est que cela prend une éternité et j'ai plus de 180 000 articles à rechercher et à supprimer. Donc, je voulais faire une barre de progression qui me permettrait de savoir jusqu'où j'avais traversé le processus.
Ainsi, après un peu de recherche, je trouve un article intitulé « en utilisant la barre de progression »
Le problème est que je ne sais pas comment écraser les deux ensemble, mais je l'ai fait une tentative ici:
Cependant, cela semble prendre encore plus de temps que le script original, je ne sais pas exactement comment cela fonctionne, et je le teste quand j'ai seulement besoin de supprimer 10-15 fichiers.
Il est probable qu'il y ait quelque chose de vraiment basique qui me manque Mais j'apprécierais vraiment de vous aider à comprendre cela.
Ici, j'ai ajouté une capture d'écran:
Si les fichiers à supprimer le nombre est extrêmement élevé, il bénéficiera également de ne pas écrire des progrès avec tous les fichier mais à la place tous les plusieurs. Par exemple, en divisant le nombre par 100, arrondissez à l'int proche, puis en l'utilisant comme un module contre un compteur. Par exemple. Avec 1-100 fichiers, vous allez écrire des progrès avec chaque fichier. Avec 200, tous les autres fichiers. Avec 1000, tous les 10 ... –
En outre, j'ai vu récursif get-item sur un très grand arbre est super lent. J'ai eu plus de chance avec get-item -recurse -directory, puis itérativement get-item -file. J'ai écrit des variations sur ceci pour valider des VHD d'OS ou des contenus de WIM. –
"C'est parce que vous essayez d'énumérer, de filtrer et de supprimer les fichiers 100 fois - ce qui est évidemment inutile." Cela prend du sens, bien sûr, cela prendrait plus de temps car j'essaye de le faire parcourir 100 fois le script entier et de me donner une barre de progression pour me dire quand cela se répète. J'aime l'option où il calcule le total des octets supprimés. Je vais essayer cela et revenir avec mes conclusions. – Liberator17