115129
Goto Top

Inhalt verschiedener Verzeichnisse auf min-max Dateien überwachen bzw. löschen

Guten Abend,

ich müsste nochmals eure Hilfe aufsuchen um mein Vorhaben umsetzten zu können.

Funktionalität:
Das Script soll alle Dateien innerhalb der Verzeichnisse (Zu überwachende Verzeichnisse) auf eine Min/Max-Anzahl überwachen und ggfls. löschen.
Ist z.B. die Anzahl der Dateien im Verzeichnis "Dir_01" größer 9Stück sollen die ältesten Dateien auf 2Stück reduziert bzw. gelöscht werden.
Dieser Vorgang soll auf alle Verzeichnisse angewandt werden.
"Dir_15" wäre ein Reserveplatzhalter, wenn das geht.

Als Beispiel:
@echo off
::Zu überwachende Verzeichnisse
Set "Dir_01=E:\1\1"  
Set "Dir_02=E:\2\2"  
Set "Dir_03=E:\3\3"  
Set "Dir_04=E:\4\4"  
Set "Dir_05=E:\5\5"  
Set "Dir_06=E:\6\6"  
Set "Dir_07=E:\7\7"  
Set "Dir_08=E:\8\8"  
Set "Dir_09=E:\9\9"  
Set "Dir_10=E:\10\10"  
Set "Dir_11=E:\11\11"  
Set "Dir_12=E:\12\12"  
Set "Dir_13=E:\13\13"  
Set "Dir_14=E:\14\14"  
Set "Dir_15="  
::Minimal/Maximal enthaltene Dateien im jeweiligen Verzeichnis
SET "Dir_01_min=2"  
SET "Dir_01_max=9"  
SET "Dir_02_min=1"  
SET "Dir_02_max=15"  
SET "Dir_03_min=21"  
SET "Dir_03_max=47"  
SET "Dir_04_min=3"  
SET "Dir_04_max=43"  
SET "Dir_05_min=32"  
SET "Dir_05_max=42"  
SET "Dir_06_min=3"  
SET "Dir_06_max=8"  
SET "Dir_07_min=54"  
SET "Dir_07_max=67"  
SET "Dir_08_min=412"  
SET "Dir_08_max=734"  
SET "Dir_09_min=21"  
SET "Dir_09_max=42"  
SET "Dir_10_min=45"  
SET "Dir_10_max=94"  
SET "Dir_11_min=32"  
SET "Dir_11_max=53"  
SET "Dir_12_min=43"  
SET "Dir_12_max=54"  
SET "Dir_13_min=734"  
SET "Dir_13_max=951"  
SET "Dir_14_min=4"  
SET "Dir_14_max=19"  
SET "Dir_15_min="  
SET "Dir_15_max="  

::Abarbeitung
...

Wäre jemand so lieb und würde das Dings vervollständigen?

Wie immer bin ich um jede Hilfe dankbar.

Gruß,
Blattlaus


EDIT:

Habe nochmal damit rumgespielt und bin ein Schritt weiter gekommen.
Das Script behält die 5 jüngsten Dateien bei. der Rest wird gelöscht.
Wie wird die min/max-Option eingebunden?

echo off & setlocal

::Zu überwachende Verzeichnisse
Set "Dir_01=E:\1\1"  
Set "Dir_02=E:\2\2"  
Set "Dir_03=E:\3\3"  
Set "Dir_04=E:\4\4"  
Set "Dir_05=E:\5\5"  
Set "Dir_06=E:\6\6"  
Set "Dir_07=E:\7\7"  
Set "Dir_08=E:\8\8"  
Set "Dir_09=E:\9\9"  
Set "Dir_10=E:\10\10"  
Set "Dir_11=E:\11\11"  
Set "Dir_12=E:\12\12"  
Set "Dir_13=E:\13\13"  
Set "Dir_14=E:\14\14"  
Set "Dir_15="  

::Minimal/Maximal enthaltene Dateien im jeweiligen Verzeichnis
SET "Dir_01_min=2"  
SET "Dir_01_max=9"  
SET "Dir_02_min=1"  
SET "Dir_02_max=15"  
SET "Dir_03_min=21"  
SET "Dir_03_max=47"  
SET "Dir_04_min=3"  
SET "Dir_04_max=43"  
SET "Dir_05_min=32"  
SET "Dir_05_max=42"  
SET "Dir_06_min=3"  
SET "Dir_06_max=8"  
SET "Dir_07_min=54"  
SET "Dir_07_max=67"  
SET "Dir_08_min=412"  
SET "Dir_08_max=734"  
SET "Dir_09_min=21"  
SET "Dir_09_max=42"  
SET "Dir_10_min=45"  
SET "Dir_10_max=94"  
SET "Dir_11_min=32"  
SET "Dir_11_max=53"  
SET "Dir_12_min=43"  
SET "Dir_12_max=54"  
SET "Dir_13_min=734"  
SET "Dir_13_max=951"  
SET "Dir_14_min=4"  
SET "Dir_14_max=19"  
SET "Dir_15_min="  
SET "Dir_15_max="  

::Abarbeitung
for /f "skip=5 delims=" %%F in ('dir %Dir_01% /B /O-D /A-D') do del "%Dir_01%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_02% /B /O-D /A-D') do del "%Dir_02%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_03% /B /O-D /A-D') do del "%Dir_03%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_04% /B /O-D /A-D') do del "%Dir_04%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_05% /B /O-D /A-D') do del "%Dir_05%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_06% /B /O-D /A-D') do del "%Dir_06%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_07% /B /O-D /A-D') do del "%Dir_07%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_08% /B /O-D /A-D') do del "%Dir_08%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_09% /B /O-D /A-D') do del "%Dir_09%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_10% /B /O-D /A-D') do del "%Dir_10%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_11% /B /O-D /A-D') do del "%Dir_11%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_12% /B /O-D /A-D') do del "%Dir_12%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_13% /B /O-D /A-D') do del "%Dir_13%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_14% /B /O-D /A-D') do del "%Dir_14%\%%F"  
for /f "skip=5 delims=" %%F in ('dir %Dir_15% /B /O-D /A-D') do del "%Dir_15%\%%F"  

Content-Key: 287519

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

Printed on: April 19, 2024 at 16:04 o'clock

Member: rubberman
Solution rubberman Nov 04, 2015 updated at 20:43:51 (UTC)
Goto Top
Hallo BlattlausOG.

Du zählst erst die Dateien, prüfst ob max überschritten wird, falls ja skippe min und lösche den Rest.
if defined Dir_01 for /f %%i in ('dir /a-d /b "%Dir_01%\*.*"^|find /c /v ""') do if %%i gtr %Dir_01_max% (  
  for /f "skip=%Dir_01_min% delims=" %%j in ('dir /a-d /b /o-d "%Dir_01%\*.*"') do del "%Dir_01%\%%j"  
)

Grüße
rubberman
Mitglied: 115129
115129 Nov 04, 2015 at 20:44:39 (UTC)
Goto Top
Vielen Dank Rubberman,

das wars! face-smile

Aufs nächste mal.

Gruß,
Blattlaus