PowerShell löscht Dateien nur aus dem Verzeichnis

14

Ich versuche, alle Dateien (aber keine Verzeichnisse) im Ordner D: \ MyTemp zu löschen. Ich habe versucht:

Remove-Item "D:\MyTemp"
Remove-Item "D:\MyTemp\*"

Wenn ich jedoch nachschaue, sind alle Dateien noch vorhanden.
Was vermisse ich?

SteB
quelle

Antworten:

18

Versuche dies:

Get-ChildItem *.* -recurse | Where { ! $_.PSIsContainer }

Habe es hier gefunden: /superuser/150748/have-powershell-get-childitem-return-files-only

So löschen Sie nur alle Dateien im angegebenen Verzeichnis (Unterverzeichnisse werden ignoriert):

Remove-Item "D:\MyTemp\*.*" | Where { ! $_.PSIsContainer }
bourne
quelle
1
Hier wird nur die Datei im aktuellen Verzeichnis
aufgelistet
Ich bin mir nicht sicher, ob du einen Rückfall machen willst. Ich werde das Original bearbeiten. Sie können einfach -recurse zum Befehl Get-ChildItem hinzufügen
bourne
Dies funktioniert (nur Dateien aus dem angegebenen Verzeichnis löschen, Unterverzeichnisse ignorieren): Remove-Item "D: \ MyTemp \ *. *" | Wo { ! $ _. PSIsContainer}
SteB
Das ist großartig. Ich bin froh, dass es funktioniert.
Borowski
Sorry übrigens, ich habe gerade gemerkt, dass ich vergessen habe, den Remove-Item einzuschließen. Es wird ein langer Tag, wow!
Borowski
12

Die akzeptierte Antwort hat bei mir nicht funktioniert, stattdessen brauchte ich:

Get-Childitem -File | Foreach-Object {Remove-Item $_.FullName}

Um sowohl Ordner als auch Dateien einzuschließen, fügen Sie Folgendes hinzu -Recurse:

Get-Childitem -File -Recurse | Foreach-Object {Remove-Item $_.FullName}
79E09796
quelle
1
Dies löscht auch Dateien aus Unterverzeichnissen - möglicherweise nicht das, was das OP vorhatte ...
Robbie Dee
1
Diese Antwort sollte man annehmen. Ich habe Dich ausgewählt!
Teoman Shipahi
4

Sie waren fast da, Sie brauchten nur:

Remove-Item "D:\MyTemp\*.*"
Robbie Dee
quelle
0

@bourne hatte es fast geschafft:

Get-ChildItem *.* -recurse | Where { ! $_.PSIsContainer } | remove-item
Mordechai
quelle
3
Dies gibt keine Antwort auf die Frage. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren . Geben Sie stattdessen Antworten an, die nicht vom Fragesteller geklärt werden müssen . - Aus der Bewertung
rnxrx
Was meinst du damit, dass es keine Antwort gibt? Was tut es? Es ist die einzige vollständige Antwort auf der Seite.
Mordechai
Es ist keine autarke Antwort. Bis auf den Punkt in Ihrer Antwort handelt es sich um eine Korrektur einer anderen Antwort, die als Kommentar eingefügt werden sollte.
rnxrx
Entschuldigung, ich denke du verstehst Powershell nicht. Nur weil ich mich auf eine andere Antwort beziehe, macht sie meine nicht weniger "autark",
Mordechai
Vielleicht möchten Sie das Problem mit der anderen Antwort erklären und daraus einen Befehl machen. Andernfalls möchten Sie vielleicht erklären, was Ihr Powershell-Befehl bewirkt
Dennis Nolte