Możesz masowo usuwać pliki/katalogi za pomocą CMD lub Powershell, ale są szybsze opcje

Możesz masowo usuwać pliki/katalogi za pomocą CMD lub Powershell, ale są szybsze opcje

Skrypt C byłby szybszy

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

Eliminuje to dodatkowe wyliczenia, które występują w pętli for w wersji z wierszem poleceń. Na końcu wyświetli się błąd, ponieważ nie można usunąć folderu, w którym się znajdujesz. Wiersz poleceń będzie zawsze szybszy niż polecenia cmdlet PowerShell, ponieważ musisz zbudować obiekt pliku, ponieważ nie ma natywnego polecenia cmdlet, które po prostu buduje ścieżkę pliku jako ciąg . Uzyskanie dodanych informacji, takich jak rozmiar pliku, data utworzenia itp. i utworzenie wspomnianego obiektu, wymaga czasu. Na pewno zobaczysz różnicę, jeśli liczba plików będzie wynosić pięć cyfr lub więcej. Codziennie przechowuję foldery i pliki, które wymagały usunięcia/archiwizacji, i zawierały od 6 do 7 cyfr i zwykle było to najszybsze rozwiązanie.

Użytkownik Reddita

Bez umieszczania tego wszystkiego w bloku skryptu dla Measure-Command, nie wiem.

Wiem, że katalog, który podałeś to

$env:TEMPlub w %TEMP%99% przypadków. Znajduje się w %LOCALAPPDATA%lub $env:LOCALAPPDATA.

Wiem też, że nie potrzebujesz get-childitem. Mógłbyś po prostu

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

Ponadto /s zajmuje się wszystkimi podkatalogami, więc nie potrzebujesz tylko jednego polecenia, aby zrobić to samo, co polecenia bota i pętla.

Użytkownik Reddita

Kilka lat temu zastanawiałem się nad usunięciem ze skryptu kilku dużych folderów (12 GB, 75 tys. plików, 7 tys. folderów) i zdecydowałem się na to wywołanie dotnet.

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

Jest szybki na zdalnym komputerze, ponieważ nie wylicza lokalnie. Nie jestem pewien, jak pasuje to do Twojego przypadku użycia. Usuwa folder podstawowy. Możesz go odtworzyć lub może zostać utworzony automatycznie, gdy zostanie użyty. Ponadto foldery tymczasowe mogą zawierać otwarte pliki, ale nie jestem pewien, co się tam stanie.

Użytkownik Reddita

Zachowaj ostrożność podczas kopiowania za pomocą /mir. Byłem świadkiem, jak pewnego dnia mój wspólnik w zbrodni przeniósł duży, produkcyjny serwer plików do swojego nowego domu, zgodnie z harmonogramem obowiązującym od kilku tygodni. Przełączył się na nowy dom i usunął źródło. Robocopy natychmiast usunął całą produkcję. Zbladł na moich oczach, gdy zdał sobie sprawę, co się stało. Dzięki Bogu, że mieliśmy uruchomione kopie-cienie. Najszybszy powrót do zdrowia, jaki kiedykolwiek widziałem. W ciągu 5 (lub mniej) minut cała produkcja została przywrócona. Nigdy więcej o tym nie rozmawialiśmy. Ale jestem bardzo ostrożny w przypadku robocopy i przełącznika /mir.

Użytkownik Reddita

Zdecydowanie najszybszym sposobem masowego usuwania plików/folderów jest robocopy, które można uruchomić za pomocą cmd.exe (może uruchomić się sekundę lub dwie szybciej, czas wykonania będzie taki sam):

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

Lub uruchom za pomocą programu powershell.exe lub pwsh.exe, chociaż nie wygląda na to, że PowerShell jest tutaj potrzebny:

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

Teraz możesz napotkać problemy z powodu używanych plików

Użytkownik Reddita

Get-ChildItem -Path „$env:USERPROFILE\AppData\Local\Temp” -Force | Usuń element -Wymuś -Recurse -ErrorAction SilentlyContinue

Użytkownik Reddita

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

for /d %%x in („%USERPROFILE%\AppData\Local\Temp*.*”) do @rd /s /q „%%x”

Skrypt CMD czy skrypt PowerShell: który jest szybszy w przypadku masowego usuwania plików/katalogów? przez u/castiel3125 w PowerShell

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *