2014-04-15 12:40:31 +0000 2014-04-15 12:40:31 +0000
57
57

Delete all files from a folder and its sub folders

I want to remove all files from a folder structure, so I’m left with an empty folder structure.

Can this be achieved in either batch or VBScript scripting?

I have tried a very basic batch command, but this required the user to allow the deletion of each file. Nie było to odpowiednie rozwiązanie, ponieważ istnieje wiele setek plików i z czasem będzie to znacznie wzrastać.

Co możesz zasugerować?

Odpowiedzi (13)

81
81
81
2014-04-15 13:18:38 +0000

Można to osiągnąć za pomocą PowerShell :

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

To polecenie pobiera każdą pozycję dziecka w $path, wykonuje metodę usuwania na każdej z nich i jest dość szybkie. Struktura folderów pozostaje nienaruszona.

Jeśli możesz mieć pliki bez rozszerzenia, użyj zamiast tego

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

Wygląda na to, że parametr -File mógł zostać dodany po PowerShellu v2. Jeśli tak, to

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

Powinien wykonać trick dla plików z rozszerzeniem.

Jeśli nie działa, sprawdź czy masz aktualną wersję Powershella

29
29
29
2017-11-02 17:21:27 +0000

Krótki i pakiet PowerShell. Nie wiadomo z jaką najniższą wersją PS będzie współpracował.

Remove-Item c:\Tmp\* -Recurse -Force
22
22
22
2014-04-15 12:44:30 +0000

Można to zrobić za pomocą polecenia del:

dir C:\folder
del /S *

Przełącznik /S służy do usuwania tylko plików rekurencyjnie.

4
4
4
2014-04-15 13:18:19 +0000

Czytając między wierszami na oryginalnym pytaniu mogę zaproponować alternatywną linię kodu BATCH, której możesz użyć. To, co to zrobi po uruchomieniu, to skasowanie tylko tych plików, które mają ponad 60 dni. W ten sposób możesz umieścić to w zaplanowanym zadaniu, a kiedy zostanie ono uruchomione, usunie nadmiar plików, których nie potrzebujesz, zamiast wysadzać cały katalog. Możesz zmienić 60 do 5 dni lub nawet 1 dzień, jeśli chcesz. To nie usuwa folderów.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4
4
4
2014-10-28 15:39:38 +0000

Użycie PowerShell:

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
3
3
3
2018-05-10 07:13:40 +0000

Użyj programu PowerShell do usunięcia pojedynczego pliku lub folderu. Przed wykonaniem komendy Delete w programie PowerShell musimy się upewnić, że jesteśmy zalogowani na serwerze lub komputerze PC z kontem, które ma pełny dostęp do obiektów, które chcemy usunąć. With Example: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Using PowerShell commnads to delete a file

Remove-Item -Path “C:\dotnet-helpers\DummyfiletoDelete. txt”

Powyższe polecenie wykona i usunie plik “DummyfiletoDelete.txt” znajdujący się wewnątrz lokalizacji “C:\dotnet-helpers”.

Using PowerShell commnads to delete all files

Remove-Item -Path “C:\dotnet-helpers*. *”

Using PowerShell commnads to delete all files and folders

Remove-Item -Path “C:\dotnet-helpers*.*” -curse

-recurse drills down and finds lots more files. Parametr –recurse pozwoli programowi PowerShell na usunięcie wszelkich elementów dziecięcych bez pytania o zgodę. Dodatkowo, parametr -force może zostać dodany w celu usunięcia ukrytych lub tylko do odczytu plików.

Użycie polecenia -Force do wymuszonego usunięcia plików

Użycie polecenia PowerShell do wymuszonego usunięcia wszystkich plików

Remove-Item -Path “C:\dotnet-helpers*.*” -Force

1
1
1
2014-11-20 21:28:24 +0000

Spróbuj tego przy użyciu PowerShell. W tym przykładzie chcę usunąć wszystkie pliki .class:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
1
1
2015-05-18 11:30:46 +0000

Usuń wszystkie pliki z bieżącego katalogu i podkatalogów, ale pozostawiając strukturę folderów.

(/Q) przełącznik jest do pytania użytkownika, czy jest ok, aby usunąć

Uwaga : spróbuj bez /Q, aby upewnić się, że nie usuwasz nic cennego.

del /S * /Q
1
1
1
2016-10-12 20:45:27 +0000

To jest najprostszy sposób IMO

Open PowerShell, przejdź do katalogu (cd), THEN

ls -Recurse * | rm

(Poof) wszystko zniknęło…

Jeśli chcesz skasować na podstawie konkretnego rozszerzenia

ls -Recurse *.docx | rm

ls jest lista katalogu

-Recurse jest flagą mówiącą powershellowi, aby przejść do dowolnego podkatalogu

* mówi wszystko

*.doc wszystko z . doc extension

| feed the output from the left to the right

rm delete

All the other answers appear to make this more confusing than necessary.

1
1
1
2015-03-16 09:12:32 +0000
  1. W Eksploratorze Windows wybierz plik główny zawierający wszystkie pliki i foldery.

  2. Wyszukaj *

  3. Sortuj według typu (wszystkie foldery znajdą się na górze, a wszystkie pliki na dole)

  4. Wybierz wszystkie pliki i naciśnij przycisk Usuń.

Spowoduje to usunięcie wszystkich plików i zachowanie struktury katalogów.

0
0
0
2020-03-01 06:34:32 +0000

Możemy usunąć wszystkie pliki z folderów i ich podfolderów za pomocą poniższego polecenia.

Get-ChildItem -Recurse -Path 'D:\Powershell Practice' |Where-Object{$_.GetType() -eq [System.IO.FileInfo]} |Remove-Item
0
0
0
2020-02-04 17:43:55 +0000

Z Powershell 5.1:

  • *
$extensions_list = Get-ChildItem -Path 'C:\folder_path 

* * 

Usuwa wszystkie itens, które nie są katalogiem. 

$extension.FullName = Ścieżka elementu 

$extension.Atrybuty = Typ elementu ( Katalog lub archiwum ) -Recurse

foreach ( $extension in $extensions_list) {

    if ($extension.Attributes -notlike "Directory") {

        Remove-Item $extension.FullName  
    }
}
  • *

Usuwa wszystkie itens, które nie są katalogiem.

$extension.FullName = Ścieżka elementu

$extension.Atrybuty = Typ elementu ( Katalog lub archiwum )

-1
-1
-1
2018-10-14 14:59:48 +0000

Jako uzupełnienie powyższych odpowiedzi, w rzeczywistości nie ma potrzeby używania polecenia Get-Childitem i przekazywania wyniku do potoku w powyższych odpowiedziach, ponieważ słowo kluczowe -Include jest zawarte w poleceniu Remove-Item

Można po prostu:

Remove-Item -Include “.” “C:\Temp” -Recurse