117643
26.06.2015, aktualisiert am 29.06.2015
3457
7
0
Dateien per Powershell bzw Batch löschen
Hallo,
Es gibt einen Ordner C:\Freigaben mit diversen Unterordnern(welche auch wieder Unterordner enthalten). Aus diesen Ordnern sollen alle *.txt Dateien gelöscht werden. Mit Ausnahme von *.txt Dateien im Unterordner C:\Freigaben\Ordner1 und C:\Freigaben\Ordner3.
Wer ist mir behilflich und sagt mir wie ein entsprechender Befehl in Batch oder Powershell aussehen muss?
Danke vorab und ein schönes Wochenende euch allen
Es gibt einen Ordner C:\Freigaben mit diversen Unterordnern(welche auch wieder Unterordner enthalten). Aus diesen Ordnern sollen alle *.txt Dateien gelöscht werden. Mit Ausnahme von *.txt Dateien im Unterordner C:\Freigaben\Ordner1 und C:\Freigaben\Ordner3.
Wer ist mir behilflich und sagt mir wie ein entsprechender Befehl in Batch oder Powershell aussehen muss?
Danke vorab und ein schönes Wochenende euch allen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 275748
Url: https://administrator.de/contentid/275748
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Michael
ist die genaue Ordnerstruktur bekannt?
Falls ja kannst in der bekannten Struktur rekursiv löschen.
Falls nein sehe ich zwei Ansätze.
1.) die nicht zu löschenden Dateien mit einem Attribut (oder Attributkombination) versehen und die dann nicht löschen.
2.) die nicht zu löschenden Dateien zuerst an eine andere, sichere Stelle kopieren/verschieben und dann zurückbewegen.
Was sagt dir eher zu?
ist die genaue Ordnerstruktur bekannt?
Falls ja kannst in der bekannten Struktur rekursiv löschen.
Falls nein sehe ich zwei Ansätze.
1.) die nicht zu löschenden Dateien mit einem Attribut (oder Attributkombination) versehen und die dann nicht löschen.
2.) die nicht zu löschenden Dateien zuerst an eine andere, sichere Stelle kopieren/verschieben und dann zurückbewegen.
Was sagt dir eher zu?
Moin,
mit der PowerShell kannst du so was machen
Das Skript macht folgendes:
In dem Verzeichnis in dem du dich befindest und in allen Verzeichnissen da drunter, werden alle txt Dateien gelöscht außer die die ein "Hallo" im Namen haben.
ps: ungetestet
Gruß Miyamoto
mit der PowerShell kannst du so was machen
get-childitem * -include *.txt -exclude *Hallo* -recurse | remove-item
In dem Verzeichnis in dem du dich befindest und in allen Verzeichnissen da drunter, werden alle txt Dateien gelöscht außer die die ein "Hallo" im Namen haben.
ps: ungetestet
Gruß Miyamoto
Hallo Michael,
kannst du so machen:
Hierbei könntest du auch mit Wildcards (-like) oder Regex(-notmatch) arbeiten, wie man es halt braucht...
Für eine größere Anzahl Ordner kannst du diese auch in ein Array schreiben (ist übersichtlicher):
Grüße Uwe
kannst du so machen:
gci 'c:\Freigaben' -Filter *.txt -Recurse | ?{$_.DirectoryName -ne 'C:\Freigaben\Ordner1' -or $_.DirectoryName -ne 'C:\Freigaben\Ordner3'} | remove-item -Force
Für eine größere Anzahl Ordner kannst du diese auch in ein Array schreiben (ist übersichtlicher):
gci 'c:\Freigaben' -Filter *.txt -Recurse | ?{$_.DirectoryName -notin @('C:\Freigaben\Ordner1','C:\Freigaben\Ordner3','C:\Freigaben\Ordner5')} | remove-item -Force
Zitat von @117643:
Die erste Variante klappt leider nicht, Er löscht trotzdem alles.
Läuft einwandfrei wenn man es denn richtig anwendet !Die erste Variante klappt leider nicht, Er löscht trotzdem alles.
Natürlich muss man hier unterscheiden, möchte ich Textdateien nur in den explizit angegebenen Verzeichnnissen nicht löschen oder auch Unterverzeichnisse dieses Ordners mit einbeziehen. Im letzteren Fall arbeitet man nicht mit dem Operator -ne sondern -notlike und setzt am Ende jedes angegebenen Verzeichnisses ein Sternchen, wie ich ja oben schon erwähnt habe.