Vous pouvez supprimer en masse des fichiers/répertoires avec CMD ou Powershell, mais il existe des options plus rapides

Vous pouvez supprimer en masse des fichiers/répertoires avec CMD ou Powershell, mais il existe des options plus rapides

Le script C serait plus rapide

Cd /d « %USERPROFILE%\AppData\Local\Temp\ » rd /s /q.

Cela supprime les énumérations supplémentaires de la boucle for que vous avez dans la version d’invite de commande. Cela générera une erreur à la fin car vous ne pouvez pas supprimer le dossier dans lequel vous vous trouvez. L’invite de commande sera toujours plus rapide que les applets de commande PowerShell car vous devez créer un objet fichier car il n’y a pas d’applet de commande native qui crée simplement un chemin de fichier sous forme de chaîne. . Il faut du temps pour obtenir les informations ajoutées telles que la taille du fichier, la date de création, etc. et créer ledit objet. Vous verrez certainement une différence si le nombre de fichiers est supérieur ou égal à cinq chiffres. J’avais l’habitude de conserver quotidiennement des dossiers et des fichiers qui devaient être supprimés/archivés et qui se trouvaient dans les 6 chiffres les plus bas et c’était généralement la solution de suppression la plus rapide.

Utilisateur Reddit

Sans tout mettre dans un scriptblock Measure-Command, je ne sais pas.

Je sais que le répertoire que vous donnez est

$env:TEMPou %TEMP%99% du temps. Il est situé dans %LOCALAPPDATA%ou $env:LOCALAPPDATA.

Je sais aussi que vous n’avez pas besoin d’obtenir un élément enfant. Tu pourrais juste

Remove-Item "$($env:TEMP)\*"-Recurse -Forceoudel /f /s /q %TEMP%

De plus, /s prend en charge tous les sous-répertoires, vous n’avez donc besoin que d’une seule commande pour faire la même chose que les commandes du bot et la boucle.

Utilisateur Reddit

J’ai envisagé de supprimer des dossiers volumineux (12 Go, 75 000 fichiers, 7 000 dossiers) d’un script il y a quelques années et j’ai opté pour cet appel dotnet.

[System.IO.Directory] :: Supprimer ($ Folder.Fullname, $ true)

C’est rapide sur une machine distante car il n’énumère pas localement. Je ne sais pas comment cela correspond à votre cas d’utilisation. Cela supprime le dossier de base. Vous pourrez peut-être le recréer, ou il peut être créé automatiquement lorsqu’il est utilisé. De plus, les dossiers temporaires peuvent contenir des fichiers ouverts, sans savoir ce qui s’y passe.

Utilisateur Reddit

Soyez très prudent avec la robocopie utilisant /mir. J’ai vu mon complice mettre en miroir un grand serveur de fichiers de production dans son nouveau domicile selon un planning qui durait depuis quelques semaines. Il est passé à la nouvelle maison et a supprimé la source. Robocopy a supprimé instantanément toute la production. Il est devenu blanc juste sous mes yeux lorsqu’il a réalisé ce qui s’était passé. Dieu merci, nous avions des clichés instantanés en cours d’exécution. La récupération majeure la plus rapide que j’ai jamais vue. En 5 minutes (ou moins), toute la production était de retour. Nous n’en avons plus jamais reparlé. Mais je fais très attention à robocopy et au commutateur /mir.

Utilisateur Reddit

Le moyen de loin le plus rapide de supprimer en masse des fichiers/dossiers est robocopy, qui peut être exécuté à l’aide de cmd.exe (peut se lancer une seconde ou deux plus rapidement, le temps d’exécution sera le même) :

mkdir « %USERPROFILE%\empty » robocopy « %USERPROFILE%\empty » « %USERPROFILE%\AppData\Local\Temp » /mir rmdir « %USERPROFILE%\empty »

Ou exécutez en utilisant powershell.exe ou pwsh.exe bien qu’il ne semble pas que PowerShell soit nécessaire ici :

mkdir « $ENV:USERPROFILE\empty » & robocopy « $ENV:USERPROFILE\empty » « $ENV:USERPROFILE\AppData\Local\Temp » /mir rmdir « $ENV:USERPROFILE\empty »

Maintenant, vous pourriez rencontrer des problèmes ici en raison de l’utilisation de fichiers.

Utilisateur Reddit

Get-ChildItem -Path « $env:USERPROFILE\AppData\Local\Temp » -Force | Remove-Item -Force -Recurse -ErrorAction SilentlyContinuer

Utilisateur Reddit

del /f /s /q « %USERPROFILE%\AppData\Local\Temp\*.* » >nul 2>&1

pour /d %%x dans (« %USERPROFILE%\AppData\Local\Temp*.* ») faites @rd /s /q « %%x »

Script CMD ou script PowerShell : lequel est le plus rapide pour la suppression massive de fichiers/répertoires ? par u/castiel3125 dans PowerShell

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *