Powershell: LastWriteTime vergleichen
Hallo Zusammen
Ich schreibe momentan ein Script, bei welchem ich in einem Folder die LastWriteTime der Files vergleichen muss.
Es geht darum, dass ich veraltete Files löschen muss. Dies kann man sich so vorstellen.
Files mit "18a" im Namen löschen.
Files mit "19a" NICHT löschen.
Files mit "20a" auch NICHT löschen.
Ich muss das Script so schreiben, dass ich die LastWriteTime von "19a" herausfinden muss und dann alle Files, die vor diesem Datum erstellt oder bearbeitet wurden gelöscht werden. Diese Files sind alle im gleichen Ordner. Wie kann ich nun die LastWriteTime vergleichen?
Hier sind meine Resultate:
$file_version = Get-ChildItem "C:\Files" -Recurse -Include ($version) | sort LastWriteTime | select LastWriteTime -First 1
$path = Get-Childitem "C:\Files" -Exclude ($version)
If ((!$path)){
Write-Host "Meldung: Es wurden keine Dateien gelöscht `n"
}
foreach($file in $path)
{
$writetime = Get-ChildItem $file | sort LastWriteTime |select LastWriteTime -First 1
if($writetime -lt $file_version)
{
Write-Host "True"
}
else{
Write-Host "False"
}
}
Leider funktioniert dies nicht...
Kann mir Jemand weiterhelfen?
Danke im Voraus!
Freundliche Grüsse
NogNog
Ich schreibe momentan ein Script, bei welchem ich in einem Folder die LastWriteTime der Files vergleichen muss.
Es geht darum, dass ich veraltete Files löschen muss. Dies kann man sich so vorstellen.
Files mit "18a" im Namen löschen.
Files mit "19a" NICHT löschen.
Files mit "20a" auch NICHT löschen.
Ich muss das Script so schreiben, dass ich die LastWriteTime von "19a" herausfinden muss und dann alle Files, die vor diesem Datum erstellt oder bearbeitet wurden gelöscht werden. Diese Files sind alle im gleichen Ordner. Wie kann ich nun die LastWriteTime vergleichen?
Hier sind meine Resultate:
- Aktuelle Files
$file_version = Get-ChildItem "C:\Files" -Recurse -Include ($version) | sort LastWriteTime | select LastWriteTime -First 1
$path = Get-Childitem "C:\Files" -Exclude ($version)
If ((!$path)){
Write-Host "Meldung: Es wurden keine Dateien gelöscht `n"
}
foreach($file in $path)
{
$writetime = Get-ChildItem $file | sort LastWriteTime |select LastWriteTime -First 1
if($writetime -lt $file_version)
{
Write-Host "True"
}
else{
Write-Host "False"
}
}
Leider funktioniert dies nicht...
Kann mir Jemand weiterhelfen?
Danke im Voraus!
Freundliche Grüsse
NogNog
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 569470
Url: https://administrator.de/contentid/569470
Ausgedruckt am: 20.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
spontan fällt mir ein
nimm
3. Du willst das aktuellste Datum. Also umgekehrt sortieren
oder
Die dann zu löschenden wären alle, welche jünger sind als das gefundene Datum
E.
spontan fällt mir ein
- Benutze bitte Code Tags!
- statt
Get-ChildItem "C:\Files" -Recurse -Include ($version)
Get-ChildItem "C:\Files\$version" -Recurse
sort LastWriteTime -Descending
select LastWriteTime -Last 1
Get-ChildItem "C:\Files\*18a*" -Recurse | Where {$_.LastWriteTime -lt $file_version} | Remove-Item
E.