fischer.juergen
Goto Top

Powershell oder Batch - Verzeichnisinhalt auf eine Anzahl von neuesten Dateien begrenzen

Hallo an die Gemeinde,
ich bekomme von einer Kamera per ftp Bilder in ein Verzeichnis gespeichert. Der Dateiname ist ist eine Zahl für den Tag und eine fortlaufende Nummer des Kamerajobs.
Während der Produkiton können mehrere hundert Bilder abgespeichert werden. Der Anwender benötigt zur Beurteilung aber nur eine gewisse Anzahl der letzten Bilder.
Wie kann mit Hilfe einer Batch-Datei oder über Powershell das Verzeichnis ähnlich wie ein FiFo mit einer festgelegten Dateianzahl automatisch gelöscht / organisiert werden?
Die Triggerung erfolgt über einen Windows-Task täglich.
Freue mich über Vorschläge.

Content-ID: 8069796672

Url: https://administrator.de/forum/powershell-oder-batch-verzeichnisinhalt-auf-eine-anzahl-von-neuesten-dateien-begrenzen-8069796672.html

Ausgedruckt am: 26.03.2025 um 04:03 Uhr

7907292512
7907292512 07.08.2023 aktualisiert um 16:19:10 Uhr
Goto Top
Powershell
$folder = "D:\Ordner"  
$keep = 10
Get-ChildItem $folder -File | sort LastWriteTime -Descending | select -skip $keep | remove-item -force
Batch
@echo off
set "folder=D:\ordner"  
set keep=10
for /f "skip=%keep% delims=" %%a in ('dir /b /a-d /o-d "%folder%\*.*"') do del "%folder%\%%a"  
Gruß siddius
fischer.juergen
fischer.juergen 07.08.2023 um 15:57:12 Uhr
Goto Top
Hallo Siddius,
Danke für die schnelle Antwort.
Klappt wunderbar. Was muss ich ergänzen, dass es auch in den darunter liegenden Unterverzeichnissen klappt?
Gruß Jürgen
7907292512
Lösung 7907292512 07.08.2023 aktualisiert um 17:09:32 Uhr
Goto Top
Zitat von @fischer.juergen:
Was muss ich ergänzen, dass es auch in den darunter liegenden Unterverzeichnissen klappt?
Insgesamt 10 Dateien über alle Ordner summiert oder 10 Dateien pro Unterordner?

Ich tippe mal auf "Pro Unterordner", Powershell
$folder = "D:\Ordner"    
$keep = 10
foreach($folder in Get-ChildItem $folder -Directory -Recurse){
    Get-ChildItem $_.Fullname -File | sort LastWriteTime -Descending | select -skip $keep | remove-item -force
}

Batch
@echo off
set "folder=D:\ordner"  
set keep=10
for /f "delims=" %%a in ('dir /b /s /ad "%folder%"') do for /f "skip=%keep% delims=" %%b in ('dir /b /a-d /o-d "%%~a"') do del "%%~a\%%b"  
fischer.juergen
fischer.juergen 08.08.2023 um 08:01:16 Uhr
Goto Top
10 Dateien je Unterordner...
Hab's getestet. Klappt prima.
Danke Siddius