Je kunt bestanden/mappen massaal verwijderen met CMD of Powershell, maar er zijn snellere opties

Je kunt bestanden/mappen massaal verwijderen met CMD of Powershell, maar er zijn snellere opties

Script C zou sneller zijn

Cd /d “%USERPROFILE%\AppData\Local\Temp\” rd /s /q.

Hiermee worden de extra opsommingen verwijderd die de for-lus bevat in de opdrachtpromptversie. Het zal aan het einde een foutmelding geven omdat je de map waarin je je bevindt niet kunt verwijderen. De opdrachtprompt zal altijd sneller zijn dan powershell-cmdlets omdat je een bestandsobject moet bouwen, omdat er geen native cmdlet is die alleen een bestandspad als een tekenreeks bouwt . Het kost tijd om de toegevoegde informatie, zoals bestandsgrootte, aanmaakdatum, enz., te verkrijgen en het object te maken. U zult zeker een verschil zien als het aantal bestanden vijf cijfers of hoger bedraagt. Ik gebruik om mappen en bestanden bij te houden die dagelijks moeten worden verwijderd / gearchiveerd en die in de hoge 6 lage 7 cijfers stonden en dit was meestal de verwijderingsoplossing die het snelst was.

Reddit-gebruiker

Zonder het allemaal in een scriptblok voor te plaatsen Measure-Command, weet ik het niet.

Ik weet wel dat de directory die je geeft, is

$env:TEMPof %TEMP%99% van de tijd. Het bevindt zich in %LOCALAPPDATA%of $env:LOCALAPPDATA.

Ik weet ook dat je geen kinditem hoeft te krijgen. Dat zou gewoon kunnen

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

Bovendien zorgt /s voor alle submappen, zodat je slechts één commando nodig hebt om hetzelfde te doen als bot-commando’s en de lus.

Reddit-gebruiker

Ik heb een paar jaar geleden gekeken naar het verwijderen van een aantal enorme mappen (12 Gb, 75k-bestanden, 7k-mappen) uit een script en kwam tot deze dotnet-oproep.

[Systeem.IO.Directory]::Delete($Folder.Volledige naam, $true)

Het is snel op een externe machine, omdat het niet lokaal opsomt. Ik weet niet zeker hoe het in jouw gebruiksscenario past. Het verwijdert wel de basismap. U kunt het mogelijk opnieuw maken, of het kan automatisch worden gemaakt wanneer u het gebruikt. Ook kunnen tijdelijke mappen open bestanden bevatten, maar ik weet niet zeker wat daar gebeurt.

Reddit-gebruiker

Wees heel voorzichtig met robocopy met /mir. Ik was er getuige van dat mijn partner in crime op een dag een grote productiebestandsserver naar zijn nieuwe thuis spiegelde volgens een schema dat al een paar weken liep. Hij ging naar het nieuwe huis en verwijderde de bron. Robocopy verwijderde onmiddellijk de volledige productie. Hij werd wit vlak voor mijn ogen toen hij zich realiseerde wat er was gebeurd. Godzijdank hadden we schaduwkopieën draaien. Het snelste grote herstel dat ik ooit heb meegemaakt. Binnen 5 (of minder) minuten was alle productie terug. Wij hebben hier nooit meer over gesproken. Maar ik ben super voorzichtig met robocopy en de /mir-schakelaar.

Reddit-gebruiker

Verreweg de snelste manier om bestanden/mappen massaal te verwijderen is robocopy, dat kan worden uitgevoerd met behulp van cmd.exe (kan een seconde of twee sneller starten, de uitvoeringstijd zal hetzelfde zijn):

mkdir “%USERPROFILE%\empty” robocopy “%USERPROFILE%\empty” “%USERPROFILE%\AppData\Local\Temp” /mir rmdir “%USERPROFILE%\empty”

Of voer het uit met powershell.exe of pwsh.exe, hoewel het hier niet klinkt alsof PowerShell nodig is:

mkdir “$ENV:USERPROFILE\empty” & robocopy “$ENV:USERPROFILE\empty” “$ENV:USERPROFILE\AppData\Local\Temp” /mir rmdir “$ENV:USERPROFILE\empty”

Nu kunt u hier problemen tegenkomen omdat bestanden in gebruik zijn

Reddit-gebruiker

Get-ChildItem -Pad “$env:USERPROFILE\AppData\Local\Temp” -Force | Item verwijderen -Force -Recurse -ErrorAction Stil doorgaan

Reddit-gebruiker

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

voor /d %%x in (“%USERPROFILE%\AppData\Local\Temp*.*”) doe @rd /s /q “%%x”

CMD-script of PowerShell-script: wat is sneller voor het massaal verwijderen van bestanden/mappen? door u/castiel3125 in PowerShell

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *