Powershell - If Bedienung - Prüfe ob mehr als eine Datei vorhanden ist, dann mache weiter, sonst ignorier es
Hallo zusammen,
hab hier nen Skript zur gezielten Entfernung von Dateien im Unterverzechnis. In den Ordnern FPC1a und FPC1b ist jeweils eine oder mehrere Bilder gespeichert. Der Skript erlaubt z.b bei vielen Bildern in einer der Order, alles zu löschen, außer das Erste und das Letzte nach Datum. Nur ist das so , dass es manchmal vorkommt, dass nur ein Bild in den Ordnern ist und das führt eben zur ner Fehlermeldung.
Kann ich da einen weiteren If Bedienung einbauen, welches überprüft, ob mehr als 1 Bild drinne ist und bei true dann eben den Skript weiter durchläuft. Bei false diesen Ordner ignoriert?
MfG
hab hier nen Skript zur gezielten Entfernung von Dateien im Unterverzechnis. In den Ordnern FPC1a und FPC1b ist jeweils eine oder mehrere Bilder gespeichert. Der Skript erlaubt z.b bei vielen Bildern in einer der Order, alles zu löschen, außer das Erste und das Letzte nach Datum. Nur ist das so , dass es manchmal vorkommt, dass nur ein Bild in den Ordnern ist und das führt eben zur ner Fehlermeldung.
Kann ich da einen weiteren If Bedienung einbauen, welches überprüft, ob mehr als 1 Bild drinne ist und bei true dann eben den Skript weiter durchläuft. Bei false diesen Ordner ignoriert?
Add-Type -AssemblyName System.Drawing
gci 'C:\Users\VAT1RT\Desktop\Versuch\*' -Recurse -Include "FPC1a","FPC1b" | ?{$_.PSIsContainer -and $_.FullName -notlike '*\PAL_XYR*' -and $_.FullName -notlike '*\After_Drift_Tilt*' -and $_.FullName -notlike '*\After_Drift_Z_Meas*'} | %{
$list = gci $_.Fullname -Exclude *.txt | ?{!$_.PSIsContainer} | sort LastWriteTime
write-host $($_.FullName) -ForegroundColor Green
if ($list){
if ($list.length -gt 2){
$list[1..($list.Length-2)] | remove-item -Force
}
}
}
MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 300019
Url: https://administrator.de/contentid/300019
Ausgedruckt am: 20.11.2024 um 07:11 Uhr
15 Kommentare
Neuester Kommentar
Kann ich da einen weiteren If Bedienung einbauen, welches überprüft, ob mehr als 1 Bild drinne ist
Das wird in Zeile 13 schon gemacht...Nur wenn es 3 oder mehr Bilder im Ordner gibt werden Dateien gelöscht, da zum Löschen ja mindestens 3 Bilder da sein müssen wenn du das älteste und das Neueste File erhalten willst.
Gruß jodel32
Powershell ist auf der Anlage aktuell ?
Nehm mal anstatt .length die Eigenschaft .count für den Vergleich in Zeile 13.
Nehm mal anstatt .length die Eigenschaft .count für den Vergleich in Zeile 13.
Count zählt die Objekte. Wenn in der Variablen aber nur ein Objekt vorhanden ist ist die Variable kein Array mehr und wenn man dann length verwendet gibt length stattdessen die Anzahl der Zeichen des Dateinames zurück, oder im Fall der PS 2.0 sogar gar auch nichts. Dies ist in aktuelleren Versionen nicht mehr der Fall.
na, mit deine IF-Abfrage die FOR-Schleife umschließen...so dass der Fortschritt nur kommt wenn es Bilder gibt. Das 1 mal 1 der Programmierung.
Btw. eine "If-Schleife" gibt es in keiner Programmiersprache
Und please: Bestehende gelöste Beiträge nicht zum Stellen immer neuer Grundlagen-Fragen missbrauchen!
RTFM!
Btw. eine "If-Schleife" gibt es in keiner Programmiersprache
Und please: Bestehende gelöste Beiträge nicht zum Stellen immer neuer Grundlagen-Fragen missbrauchen!
RTFM!
[OT ii]
Nein, es heisst nicht If-Bedienung... *schluchz*
Hätte ich ja bereits weiter oben erwähnen können, sorry, mein Fehler....
RTFDuden..
Ich hasse diese Montage....
Biber
[/OT ii]
Nein, es heisst nicht If-Bedienung... *schluchz*
Hätte ich ja bereits weiter oben erwähnen können, sorry, mein Fehler....
RTFDuden..
Ich hasse diese Montage....
Biber
[/OT ii]
Das versteh ich nicht
Oh mann echt schwer von Begriff... das Oberstübchen wohl noch beim Eier suchen In Zeile 13 wird doch geprüft ob es mehr als 2 Bilder gibt oder nicht, also ist das deine Position an der du ansetzt, war das so schwer ?? Wenn ja dann Buch
Schon wieder Freidaach ?
Gähhnnn ...
@Biber mach hier den Laden dicht ...
gci 'C:\Users\VAT1RT\Desktop\Versuch\*' -Recurse -Include "FPC1a","FPC1b" | ?{$_.PSIsContainer -and $_.FullName -notlike '*\PAL_XYR*' -and $_.FullName -notlike '*\After_Drift_Tilt*' -and $_.FullName -notlike '*\After_Drift_Z_Meas*'} | %{
$list = gci $_.Fullname -Exclude *.txt | ?{!$_.PSIsContainer} | sort LastWriteTime
write-host $($_.FullName) -ForegroundColor Green
if ($list){
if ($list.Count -gt 2){
1..($list.Count - 2) | %{
Write-Progress -Activity "Löschvorgang" -PercentComplete (($_ / ($list.Count-2))*100) -Status "Lösche Datei $($list[$_].Fullname)"
$list[$_] | remove-item -Force
}
}
}
}