hanni007
Goto Top

Bestimmte Bilder mit Batch löschen

Hallo,

seit einigen Tagen bin ich schon als Nichtnutzer in eurem Forum unterwegs. Nun habe ich mich aber entschlossen, mich bei euch anzumelden. Ich habe nämlich eine Frage.

Ich habe mir auf Arbeit das Ziel gesetzt, Bilder von einer Webcam, bei dem ein Bau von einem Gebäude aufgezeichnet wurde, zu einem Zeitraffer zu verbinden. Die Zeitraffersoftware habe ich schon gefunden.

Nun ist es aber so, dass ich mehr als 200000 Bilder sortieren muss, da ich zum einen nicht jedes einzelne Bild brauche und schon garnicht die Nachtbilder. Möchte ja nicht, dass jemand Epilepsie bekommt. Die Bilder wurde bereits nur aller fünf Minuten gespeichert mit immer dem selben Format: "Jahr-Monat-Tag-Stunde-Minute.jpg" Ich habe also eine folgende Liste:

2013-02-09-00-00.jpg
2013-02-09-00-05.jpg
...
2013-02-09-15-45.jpg
...

Jeder Tag ist in einem neuen Ordner mit 288 Bildern. Diese Ordner liegen in einem Überordner "Bilder_Bau".

Mein Ziel:
Eine Batch schreiben, die jedes dritte oder vierte Bild löscht, die Nachtbilder entfernt, bzw alle Bilder von 00.00 Uhr bis 07:00 Uhr und 17:00 bis 23:55 Uhr, und alle Bilder dann in einen bestimmten Ordner zusammen verschiebt, sodass ich sie für die Zeitraffersoftware nutzen kann.

Es wäre wirklich nett, wenn wir zusammen eine Möglichkeit finden, das zu realisieren.

BTW: Ich möchte das gern mit einer Batch abarbeiten, egal wie sinnvoll oder ressourcenhungrig das ist. ;) Eventuell kann ich mich auch mit Shell-Befehlen abfinden, habe davon aber wirklich keine Ahnung.

Beste Grüße
Hanni007

Content-ID: 244464

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

rubberman
Lösung rubberman 23.07.2014, aktualisiert am 24.07.2014 um 07:50:51 Uhr
Goto Top
Hallo Hanni007, willkommen im Forum.

Speicher mal folgenden Code in das Bilder_Bau Verzeichnis:
@echo off &setlocal EnableDelayedExpansion
if not exist "Bilder_Zeitraffer\" md "Bilder_Zeitraffer"  
for /f "tokens=1* delims=:" %%i in ('dir /a-d /b /s /on "*.jpg"^|findstr /n "^"') do (  
  set /a "ignore = %%i %% 3"  
  if !ignore! neq 0 (
    for /f "tokens=4 delims=-" %%k in ("%%~nj") do set /a "h = 100%%k %% 100"  
    if !h! gtr 6 if !h! lss 17 (
      copy "%%j" "Bilder_Zeitraffer\"  
    )
  )
)
Grüße
rubberman
hanni007
hanni007 24.07.2014 um 07:43:26 Uhr
Goto Top
Hallo rubberman,

danke für den tollen Code. Er funktioniert sehr gut. Habe noch eine kleine Änderung am Code getätigt, da ich wie gesagt nur jedes dritte Bild haben wollte, nicht jedes dritte ingnorieren. Das wäre dann nur eine kleine Änderung in Zeile 05:
if !ignore! == 0 (
Ich danke dir wirklich sehr. Hast meinen Tag gerettet! ;)

Viele Grüße
Hanni007