2013-05-17 13 views

Antwort

32

Hier ist ein ganz prägnanter noch sehr gut lesbar Weg, dies zu tun:

$lastWrite = (get-item $fullPath).LastWriteTime 
$timespan = new-timespan -days 5 -hours 10 -minutes 5 

if (((get-date) - $lastWrite) -gt $timespan) { 
    # older 
} else { 
    # newer 
} 

Der Grund dieser Arbeiten Weil das Subtrahieren von zwei Daten eine Zeitspanne ergibt. Timespans sind vergleichbar mit Standardoperatoren.

Hoffe, das hilft.

5

Skript Diese Powershell wird älter als 5 Tage, 10 Stunden und 5 Minuten. Sie können es als eine Datei mit einer Erweiterung .ps1 speichern und dann laufen:

# You may want to adjust these 
$fullPath = "c:\path\to\your\files" 
$numdays = 5 
$numhours = 10 
$nummins = 5 

function ShowOldFiles($path, $days, $hours, $mins) 
{ 
    $files = @(get-childitem $path -include *.* -recurse | where {($_.LastWriteTime -lt (Get-Date).AddDays(-$days).AddHours(-$hours).AddMinutes(-$mins)) -and ($_.psIsContainer -eq $false)}) 
    if ($files -ne $NULL) 
    { 
     for ($idx = 0; $idx -lt $files.Length; $idx++) 
     { 
      $file = $files[$idx] 
      write-host ("Old: " + $file.Name) -Fore Red 
     } 
    } 
} 

ShowOldFiles $fullPath $numdays $numhours $nummins 

Hier finden Sie ein wenig mehr Details über die Linie, die die Dateien filtert. Es ist in mehr aufgeteilt (nicht legal Powershell sein kann), so dass ich Kommentare enthalten könnte:

$files = @(
    # gets all children at the path, recursing into sub-folders 
    get-childitem $path -include *.* -recurse | 

    where { 

    # compares the mod date on the file with the current date, 
    # subtracting your criteria (5 days, 10 hours, 5 min) 
    ($_.LastWriteTime -lt (Get-Date).AddDays(-$days).AddHours(-$hours).AddMinutes(-$mins)) 

    # only files (not folders) 
    -and ($_.psIsContainer -eq $false) 

    } 
) 
4

Test-Path kann dies für Sie tun:

Test-Path $fullPath -OlderThan (Get-Date).AddDays(-5).AddHours(-10).AddMinutes(-5) 
+0

Der -OlderThan Schalter in PS2.0 nicht verfügbar ist. Nicht sicher, wann es eingeführt wurde, aber es ist definitiv in PS4.0 verfügbar. – Mike

Verwandte Themen