mc-doubleyou
Goto Top

Kopiere nur jedes x-te Bild oder Datei

Hallo zusammen,

ich habe ein Problem, ich habe aus versehen statt alle 60 min, alle 5 min ein Bild erzeugt.

Nun würde ich gerne nur jedes 12 te Bild kopieren und so wieder nur ein Bild pro Stunde haben.

Der KopierBefehl ist mir natürlich bekannt aber ich habe leider keine Ahnung wie ich Bild 2-11 vom Kopieren auslasse.

Danke!

lg mc-dy

Content-Key: 174758

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

Printed on: April 24, 2024 at 22:04 o'clock

Member: bastla
bastla Oct 17, 2011 at 08:38:23 (UTC)
Goto Top
Hallo mc-doubleyou!

Unterliegen die Dateinamen der Bilder eigentlich der Geheimhaltung? face-wink

Anyhow: Schematisch wird es in etwa auf:
@echo off & setlocal
set /a Auswahl=12

pushd "D:\Bilder"  
for /f "tokens=1* delims=:" %%i in ('dir /b /a-d /on *.jpg^|findstr /n "^"') do call :ProcessFile %%i "%%j"  
popd
goto :eof


:ProcessFile
set /a Modulo=%1 %% Auswahl
if %Modulo% neq 1 goto :eof
echo Kopiere %2
goto :eof
hinauslaufen ...

Grüße
bastla

[Edit] "pushd" / "popd" und "/a-d" ergänzt
Member: mc-doubleyou
mc-doubleyou Oct 17, 2011 at 09:42:06 (UTC)
Goto Top
WOW,

und mal wieder verstehe ich genau nichts -.-

Bildername baut sich wie folgt auf: NAME_DATUM_ScreenNUMMER (Sortierung ist richtig)

Auswahl mit welchem Bild begonnen wir gibt es so keine oder? (Muss nicht sein wäre aber evtl. nicht schlecht)
Weiters verstehe ich nicht wo hier das Ziel angegeben wird ich sehe nur die Quelle.

Mal ganz abgesehend davon das ich bis jetzt nicht verstehe wofür SETLOCAL da ist und was im Bereich von :PROCESSFILE passiert.
Die for Abfrage hingegen erscheint schon eher einleuchtend zumal es nicht meine erste ist.

Wäre nett wenn erklärungen folgen würden damit ich das Script optimieren kann.

Danke!

lg mc-dy
Member: bastla
bastla Oct 17, 2011, updated at Oct 18, 2012 at 16:48:47 (UTC)
Goto Top
Hallo mc-doubleyou!

Die Zeile 11 ist ja auch nur eine Demo - einen "copy"-Befehl wirst Du hoffentlich selbst hinbekommen ...
Kurze Erklärung:
Die "for"-Schleife erzeugt einfach eine geordnete (derzeit nach Name, da ich mal auf Verdacht eine vernünftige Namensgebung vorausgesetzt hatte, auf Wunsch aber auch nach Erstelldatum mit "/od /tc") und nummerierte Liste der Dateien im angegebenen Ordner, wobei die Nummer als %1 und der Name als %2 im (für jede Datei) aufgerufenen Unterprogramm ":ProcessFille" ankommt.

Dort wird mit einer Modulo-Berechnung (= Ermittlung des Divisionsrests) eine Datei nur dann weiter verarbeitet, wenn dieser Divisionsrest genau 1 ist - demzufolge (beim verwendeten Teiler 12) die Dateien mit den Laufnummern 1, 13, 25, ...

Um mit einer bestimmten Datei zu beginnen, genügt es, von Hand vorweg alle älteren (bzw allgemein: in der Sortierung davor liegenden) Dateien zu entfernen.
Oben habe ich noch Kleinigkeiten angepasst, damit sicher nur Dateien (und keine Ordner) erfasst und der Quellpfad automatisch berücksichtigt werden.
"setlocal" habe ich zB hier kurz erklärt ...

Grüße
bastla