Power Shell:
gci C:\Reports\*\* | where {$_.LastWriteTime -gt ((get-date)- (new-timespan -day 7))} | select FullName,LastWriteTime | ft
Ein bisschen kaputt machen:
gci
(aka get-childitem
) macht das, was es klingt, behandelt den angegebenen Dateisystempfad als Objekt und zieht die untergeordneten Elemente (Dateien oder Ordner) daraus ab.
Dies wird an die where
Anweisung weitergeleitet, die als Argument eine einzige Filterfunktion hat.
Die Filterfunktion ist ein "einfacher" Vergleich, in diesem Fall = "True, wenn A Great Than B ist". Der erste Teil davon ist, $_.LastWriteTime
dass jedes Objekt aus der Pipe übergeben wird und die LastWriteTime-Eigenschaft herausgezogen wird. Der letzte Teil davon ist ein relatives Datumskonstrukt; Nichts ist in PS super einfach. Der erste Teil des Date-Dings erhält das aktuelle Datum, dann subtrahiert es eine Zeitspanne von dieser Zahl (in diesem Beispiel erstelle ich ein neues Datumsobjekt, das den Wert 7 Tage enthält; jetzt würden also minus 7 Tage das Datum angeben.) vor 7 Tagen).
Von den Objekten, die die where
Filterung durchlaufen haben, ziehe ich nur die Eigenschaften FullName und LastWriteTime heraus, da uns dies alles interessiert.
Wenn alles fertig ist, wird es an den format-table
(aka ft
) Befehl weitergeleitet, so dass eine hübsche Tabelle wie folgt erstellt wird :
FullName LastWriteTime -------- ------------- C:\Reports\Task1\Report1 7/11/2011 10:00:00 AM C:\Reports\Task2\Report1 7/10/2011 5:00:00 AM C:\Reports\Task2\Report2 7/6/2011 9:00:00 PM C:\Reports\Task4\Report7 7/4/2011 3:00:00 PM
Um nur die Zählung von all dem zu erhalten, schließen Sie den obigen Befehl wie folgt ein: (mess_from_above_less_the_ft_part).count
(Müssen Sie den "| ft" -Teil wegnehmen oder fügt er 4 Zeilen Tabellenformatierung hinzu, die gezählt werden und Ihre Zählung um 4 abbrechen.