2017-06-27 1 views
1

Ich brauche ein Skript, das mir die Datei holt, die einem bestimmten Datum am nächsten kommt, und benötigt bitte etwas Hilfe.Datei, die einem bestimmten Datum am nächsten kommt

Zum Beispiel:

$GivenDate = [datetime]"06/26/2017 10:30" 

Get-ChildItem $backupDirectory -Filter "*.diff" 

Ausgabe sieht wie folgt aus:

Mode    LastWriteTime   Length Name                                      
-a----  25.06.2017  15:30   506368 db1_backup_2017_06_25_153001_5520722.diff                            
-a----  26.06.2017  7:30  1597952 db1_backup_2017_06_26_073001_6387310.diff                            
-a----  26.06.2017  9:30   675840 db1_backup_2017_06_26_093001_6217913.diff                            
-a----  26.06.2017  11:30   657408 db1_backup_2017_06_26_113001_1234104.diff                            
-a----  26.06.2017  13:30   675328 db1_backup_2017_06_26_133000_9901392.diff                            
-a----  26.06.2017  15:30   673792 db1_backup_2017_06_26_153001_5430241.diff 

Wie kann ich die Datei auswählen, die $givenDate am nächsten ist?

+0

Sind Sie auf der Suche nach nächsten _after_ '$ gendendate', _before_ oder egal? – gms0ulman

Antwort

4

berechnet eine TimeSpan zwischen dem LastWriteTime Eigenschaftswert und Ihren $GivenDate, dann sortiert auf dem absoluten Wert (die Dauer) der Zeitspanne:

$Closest = Get-ChildItem $backupDirectory -Filter *.diff |Sort {(New-TimeSpan $GivenDate $_.LastWriteTime).Duration()} |Select -First 1 
0

Variation von @Mathias R. Jessen Lösung (Dauer und Zeitspanne sind nicht notwendig)

Get-ChildItem $backupDirectory -file -Filter *.diff | sort {($GivenDate - $_.LastWriteTime)} | Select -First 1 
+1

* "(Dauer und Zeitspanne sind nicht notwendig)" * - Das hängt ganz von seiner Definition von "am nächsten" ab :-) –

Verwandte Themen