Per Powershell nach Dateien in Unterverzeichnissen mit bestimmter Extension und Datumattributen suchen


Ein einfaches dir *.ext /s ist in Powershell trotz Alias für dir nicht so einfach möglich. Dafür hat man aber ganz einfache Möglichkeiten seine Abfrage zu erweitern.

Man möchte z. B. alle Unterverzeichnisse durchgehen und die darin befindlichen PDF-Dateien auflisten, dazu verwendet man

Get-ChildItem –Recurse | where {$_.extension –eq ".pdf"}

wenn man nun aber nur alle pdf-Dateien seit 2009 haben möchte, verwendet man diesen Befehl

Get-ChildItem –Recurse | where {$_.extension –eq ".pdf" –and $_.LastWriteTime –gt 2008}

4 Antworten to “Per Powershell nach Dateien in Unterverzeichnissen mit bestimmter Extension und Datumattributen suchen”

  1. Quirel Says:

    Oben ist ein Fehler! .LastWriteTime sollte um .Year ergänzt werden, damit das Jahr verglichen wird!

    Also Get-ChildItem –Recurse | where {$_.extension –eq „.pdf“ –and $_.LastWriteTime.Year –gt 2008}

    Alternativ kann man auch Get-ChildItem –Recurse | where {$_.extension –eq „.pdf“ –and $_.LastWriteTime –gt (Get-Date).AddDays(-10)} verwenden, wenn man die Änderungen der letzten 10 Tage möchte.

  2. Quirel Says:

    Wenn man alles von heute seit 0 Uhr haben möchte, kann man dieses Konstrukt verwenden (in 3er PS-Syntax):

    dir *.log |where lastwritetime -gt (Get-Date (Get-Date -Format dd.MM.yyyy))

    Durch Get-Date -Format dd.MM.yyyy wird das aktuelle Datum als String ermittelt, dieser String wird dem äußeren Get-Date Aufruf übergeben. Da nur das reine Datum übergeben wird, wird ein neues Datumsobjekt mit dem Datum aber Uhrzeit 0 Uhr erzeugt.

    Durch den Vergleich -gt hat man dann alles passend vom heutigen Tag.

    Funktioniert natürlich nicht bei anderen Datumsformaten.

  3. Quirel Says:

    Noch bessere Variante:

    dir *.log |where lastwritetime -ge ([DateTime]::Today)

    [DateTime]::Today liefert auch das Datum aber mit Uhrzeit 00:00:00!

  4. Quirel Says:

    Wer reines Powershell verwenden möchte, anstatt aufs .Net Framework zurückgreifen zu müssen, der verwendet anstatt [DateTime]::Today eben

    Get-Date (Get-Date -Format (Get-culture).DateTimeFormat.ShortDatePattern)

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: