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-Key: 8069796672

Url: https://administrator.de/contentid/8069796672

Printed on: December 4, 2023 at 09:12 o'clock

Mitglied: 7907292512
7907292512 Aug 07, 2023 updated at 14:19:10 (UTC)
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
Member: fischer.juergen
fischer.juergen Aug 07, 2023 at 13:57:12 (UTC)
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
Mitglied: 7907292512
Solution 7907292512 Aug 07, 2023 updated at 15:09:32 (UTC)
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"  
Member: fischer.juergen
fischer.juergen Aug 08, 2023 at 06:01:16 (UTC)
Goto Top
10 Dateien je Unterordner...
Hab's getestet. Klappt prima.
Danke Siddius