Mit diesem Befehl ich für die neueste Datei in einem Verzeichnis suchen:finden neueste Datei im Verzeichnis, und wählen Sie dann alle Dateien mit dem gleichen Datetime
gci C:\temp | sort LastWriteTime -descending | select -first 1
Meine Auswahl ist ziemlich groß, mit 60'000 + txt Dateien. Das Ausführen dieses Befehls nimmt:
PS C:\xy> measure-command {gci C:\temp | sort LastWriteTime -descending | select -first 1}
Days : 0
Hours : 0
Minutes : 0
Seconds : 13
Milliseconds : 465
Ticks : 134657703
TotalDays : 0.000155853822916667
TotalHours : 0.00374049175
TotalMinutes : 0.224429505
TotalSeconds : 13.4657703
TotalMilliseconds : 13465.7703
Wie Sie sehen können, dieser Befehl dauert eine lange Zeit zu beenden.
Meine Aufgabe ist es, alle Dateien, die die gleiche LastWriteTime
-Eigenschaft haben, als die Datei zu erhalten, die der Befehl zurückgibt (auf die Minute).
habe ich versucht, so etwas wie dieses:
$file = gci C:\temp -OutVariable files | sort LastWriteTime -descending |
select -first 1 | % { $_.LastWriteTime }
$myfiles = $files | ? {$_.LastWriteTime -like $file}
wenn ich $file
vergleichen, die die Lastwritetime gefunden wird, und $myfiles
, die alle Dateien mit dem gleichen Lastwritetime enthalten sollte, $myfiles
immer nur eine Datei enthält - dies, weil das ist Sekunden sind für jedes Objekt unterschiedlich:
PS C:\xy> $file
Montag, 21. November 2016 13:10:08
Wie kann ich die Dateien, die ich brauche, indem sie ihre Eigenschaften zu vergleichen Lastwritetime?
entweder Sie einen Tippfehler haben oder Ihr Skript wird nicht funktionieren.Ihre Skripte sagen '$ file =', aber es sollte '$ files =' sein, auch die zweite Zeile beginnt mit 'files' anstelle von' $ files' – 4c74356b41
@ 4c74356b41 '$ file' sollte die LastWriteTime des gefundenen Objekts enthalten, während '$ files' sollte direkt nach dem gci Call (OutVariable) – SimonS
erstellt werden oh, es sollte' -OutVariable files', no '$' sein, auch was erreicht dies: '% {$ _. LastWriteTime}' – 4c74356b41