cyberfrosch
Goto Top

Eine Batch zum Ordnererstellen und Verschieben

Hallo zusammen,
ich sitze nun schon einiger Zeit an einem Problem bei welchem ich durch googlen in bestehenden Infos nicht ans Ziel gelange.
Es gibt zu viel ähnliches das aber in meinem Fall doch nicht zutrifft. Jetzt seid ihr hier meine große Hoffnung.

Ausgangssituation:

In mehreren Häusern sind an Vorder- und Hintertür IP-Kameras angebracht die rund um die Uhr (also nicht nur bei Alarm) Fotos schießen (.jpg) und diese Fotos auf einen zentralen FTP Server ablegen.
Der FTP ist ein virtuelles Win7Prof, 64Bit, deutsch, mit dem FileZilla ausgerüstet.
Jede Kamera verfügt über einen eigenen FTP-Zugang zum Hochladen der Fotos welcher im Ordner C:\FTP\ Haus1\Kamera1\ rauskommt.
Jeder Bewohner verfügt über einen seperaten FTP Zugang um die gespeicherten Fotos downzuloaden welcher im Ordner D:\FTP\ Haus1\ rauskommt und alle Kameraordner sieht.
Auf dem FTP sieht das dann so aus:

00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg ---> Beispielname für ein Bild
X:\FTP\ ---> Speicherort aller Bilder
Haus1 - Haus99 ---> Der Objektename sowie gleichzeitig Benutzername
Kamera1, Kamera2 ... ---> Hier liegen die Bilder je einer Cam

Beutzer = Haus1
Homedirectory: Haus1 (X:\FTP\Haus1\)
Unterverzeichnisse: Kamera1, Kamera2

Beutzer = Haus2
Homedirectory: Haus2 (X:\FTP\Haus2\)
Unterverzeichnisse: Kamera1, Kamera2
...

Der Zeittakt der Fotos liegt bei 3 Sekunden. Bedeutet jede Kamera schießt alle 3 Sekunden ein Bild und legt es unter dem jeweiligen Ordner auf dem zentralen FTP Server ab.
Daraus egeben sich ca. 3500 Fotos pro Tag und Kamera. Wer schon mal mit Ordner mit so vielen JPG Dateien hantiert hat kennt das Problem: Die Ordner lassen sich kaum noch öffnen.
Wartet man sogar eine Woche oder länger, schaffen es selbst leistungsstarke Computer kaum mehr den Inhalt dieser Ordner anzuzeigen.

Als Lösung kommt nur in Frage die Ordner klein zu halten, sodass max die Fotos einer Stunde (ca. 145 Stück) in jeweils einem Ordner landen.
So sollte es also hinterher aussehen:

Y:\FTP\Haus1\Kamera1\22_03_2012_1100\
Y:\FTP\Haus1\Kamera1\22_03_2012_1200\
Y:\FTP\Haus1\Kamera1\22_03_2012_1300\
Y:\FTP\Haus1\Kamera1\22_03_2012_1400\

Also halt pro Stunde ein eigener Ordner in dem dann die entsprechenden Bilder dieser Stunde lagern, wie zB.:

Y:\FTP\Haus1\Kamera1\22_03_2012_1500\00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg

Das manuelle Verschieben der Bilder ist jetzt nicht so die schönste Lösung,
daher suche ich eine Batch welche die Schritte Ordner erstellen + Dateien verschieben übernimmt.
Anzumerken wäre auch das die Anzahl an Häusern mit Kameras wächst, die Ordnerstruktur aber bleiben wird.
Jeweils die Fotos von einer Stunde aus "X:\FTP\ Kamera1" sollen in das frisch erstellte "Y:\FTP\Haus1\Kamera1\%Datum% %Uhrzeit%\

Da ich bis jetzt nur Teilskripte finden konnte die für ganz andere Sachen bestimmt waren oder gar für Linux
geschrieben wurden hoffe ich auf eure Unterstüzung.

Danke + Gruß

Cyberfrosch

Content-ID: 182821

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

Ausgedruckt am: 26.11.2024 um 00:11 Uhr

60730
60730 29.03.2012 um 21:15:59 Uhr
Goto Top
Moin,

Das sollte doch nicht schwer aein....

Dieses forum und den batchbereich hast du gefunden, hier gibt es zwei benutzer deren nick mit einem b wie batch beginnt, und bastla meine ich nicht.
Eben dieser jene hat hier annodunnemals ein tutorial batch und datum hinzerlassen.

Und damit ist der ganze schmonzens innerhalb kuerzester zeit erledigt.

Ps. Ueberleg mal, ob es sinnvoll ist die dateien am stueck umzusortieren, pder ob es nicht sinnvoller waere, punkt hh.oo eine liste anzulegen, aller dateien und die dann genuesslich zu verschieben, denn xxx ordner alle 3 sekunden ein neues bild(pro ordner) wird eng.....

Wenn du (was nicht anzunehmen ist) irgendwo nicht weiterkommst, sag bescheid.
Vorsagen ist unsportlich.

Gruss
bastla
bastla 29.03.2012 um 21:32:10 Uhr
Goto Top
Hallo T-Mo!

Wenn ich "00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg" richtig interpretiere, sollte der Umweg über das Dateidatum eigentlich nicht nötig sein ...

... obwohl ich zugeben muss, dass "Y:\FTP\Haus1\Kamera1\22_03_2012_1500\00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg" nicht zu dieser Überlegung passt.

Grüße
bastla
60730
60730 30.03.2012 um 10:13:35 Uhr
Goto Top
Salue bastla,

Zitat von @bastla:
Hallo T-Mo!

Wenn ich "00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg" richtig interpretiere, sollte der Umweg
über das Dateidatum eigentlich nicht nötig sein ...
Noe, schrub och was von datei darum?

Wenn ja mea culpa, aer ich meine mich dran zunerinnern, dass benutzer b mit den beiden beissern (nennen wie ihn mal biber) da eine schoene nummer aufgezogen hat, anhand man sehr leicht das aktuelle datum erkennen kann.

... obwohl ich zugeben muss, dass "Y:\FTP\Haus1\Kamera1\22_03_2012_1500\00EA2163CFF9(Kamera
5)_0_20120327225341_4388.jpg" nicht zu dieser Überlegung passt.

Ich ueberlege grad, ob man das ueberhaupt machen muss, sehe ich das richtig, du meinst so einen mehrzeiler,mder stumpf anhand diverer erkennungsmerkmale egal welcher tag heute ist, die dateinamen so zerlegt, dass ein schuh draus wird?

So eine einmal fuer immer auch fuer die bergangenheit?
Yupp das ist noch simpler, sowas faellt mir somspaet nicht auf den ersten blick ein.

Nur,,wo bleibt denn unser cyberfrosch?
Grüße
bastla

Zurueck
pieh-ejdsch
pieh-ejdsch 30.03.2012 um 10:24:26 Uhr
Goto Top
moin,

ich würd ja bei der Camsoftware anfangen. Dort die Zugehörigen Variablen heraussuchen Zeitstempel Jahr monat Tag Stunde etc. usw.entsprechend so schreiben,dass die Speicherung in etwa gleich so erfolgt.

anstatt so
Y:\FTP\Haus1\Kamera1\22_03_2012_1500\00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg

lieber so
Y:\FTP\Haus1\Kamera1\00EA2163CFF9(Kamera 5)_0_2012032722\5341_4388.jpg

Y:\FTP\Haus1\Kamera1\00EA2163CFF9(Kamera 5)_0_%YYYY%%MM%%DD%%hh%\5341_4388.jpg
ABER als Alternative würde ich mir hier überlegen , ob das anlegen von Überwachungsvideos nicht doch besser ist.
Klar das Material sichtet sich schlechter aber Du hast dann ein Video pro Tag oder so.
Obwohl so ein Video mit Schnelldurchlauf schnell angeschaut sein müsste und wenn eh die Info im Videolog nach Aktivität bei Uhrzeit dastünde.

Nur,,wo bleibt denn unser cyberfrosch?
vllt zählt er grad die Bilder, wo der Ordner noch gefahrlos geöffnet werden kann!

Gruß Phil
Cyberfrosch
Cyberfrosch 01.04.2012, aktualisiert am 18.10.2012 um 18:50:29 Uhr
Goto Top
Endlich Wochenende und wieder Zeit ...
Vielen Dank für eure Hinweise zu dem Thema.

@pieh-ejdsch: In den Einstellungen der Kamera kann ich quasi nur angeben ob Aufnahmezeitpunkt im Namen des Fotos enthalten ist oder nicht.
Weitere Details kann ich nicht beeinflussen.
Wie aber bastla richtig angemerkt hat ist das Datum und die Zeit doch vorhanden.

Über die Aufzeichnung von Videos habe ich natürlich nachgedacht und einige Tests durchgeführt.
Aus Kostengründen hängt der Server an einem Unitymedia Anschluß mit 64 bzw 5 mbit.
Wärend der Download für die Aufgabe passt wird es aber schon eng wenn mehrere die Videos ansehen bzw. downloaden wollen.
Auch lastet eine Kamera die filmt den Upload des jeweiligen Hauses zu stark aus.
In meinem Beispiel schrieb ich von je 2 Kameras, es gibt aber auch Objekte mit mehr Kameras und dazu noch mit schwächeren DSL Leitungen ausgerüstet.
Letztlich endet so ein Video meist in einer "Diashow" mit mieser Qualität, da bleibe ich dann lieber kommplett bei den JPG's.
Diese kann ich auf 1 Bild pro Sekunde hochregeln und habe einen Bruchteil des Traffics.

@bastla: Der Dateiname sowie der Pfad waren nur spontane beispiele, bitte nicht irritieren lassen.
Da sämtliche Kameras auf den selben NTP Server blicken kann davon ausgegangen werden das der jeweilige Zeitstempel korrekt ist.
Wenn es also einfacher ist die "Infos" aus dem Dateinamen zu holen als aus den Zeitangaben dann sollte das funktionieren.
Leider bringt mich das jetzt nicht wirklich weiter.

@timobeil: Das 3-teilige Tutorial von Biber habe ich gefunden und mir raucht schon der Schädel.
Im Bereich Batch Files bin ich absoluter Noob und es entstehen mehr Fragen als sich mir beantworten.
Im Teil III des Tutorials habe ich diesen Link hier gefunden:


Variablen und Wildcards???

@set meinroot=c:\input
@set copyroot=c:\ABLAGE
@chdir %meinroot%
@set datei=1.txt
@set Ver=%datei_alt:~0,1%
@echo %Ver%
@Move %meinroot%\%datei% %copyroot%\%Ver%*\%datei% (In dieser Zeile %Ver%*)


Es ist das Beispiel das am ehesten auf mein Anliegen passt, auch wenn in den Dateinamen der Fotos viel zu viel andere Zeichen stehen die ja nicht zur Namesgebung genutzt werden sollen.
Was hier die @-Zeichen sollen ist mir schleierhaft und den Code verstehe ich ehrlich gesagt nur bis Zeile 4.
Was ich aber sehe das hier ein je einziges Verzeichnis für Start und Ziel angegeben wird, es in meinem Fall aber dutzende gibt (2 pro Kamera)...
bastla
bastla 01.04.2012 um 21:09:27 Uhr
Goto Top
Hallo Cyberfrosch!

Wenn ich Dich einigermaßen richtig verstanden habe, sollte das für eine Kamera eines Hauses etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set "Haus=Haus1"  
set "Kamera=Kamera5"  

set "Quelle=X:\FTP\%Haus%\%Kamera%"  
set "Ziel=Y:\FTP\%Haus%\%Kamera%"  

set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%"  

for /f "delims=" %%i in ('dir /b "%Quelle%\*.jpg"^|findstr /v "%AktZeit%"') do (  
    for /f "tokens=3 delims=_" %%a in ("%%i") do (  
        set "Timestamp=%%a"  
        set "Ordner=!Timestamp:~6,2!_!Timestamp:~4,2!_!Timestamp:~0,4!_!Timestamp:~8,2!00"  
        md "%Ziel%\!Ordner!" 2>nul  
        echo move "%%i" "%Ziel%\!Ordner!\"  
    )
)
Dieser Batch sollte für "Haus1", "Kamera5" die benötigten Zielordner auf Y: (tatsächlich) erstellen und die passenden Verschiebebefehle zum Testen (wegen des "echo" in Zeile 15 nur) anzeigen ...

Um Kollisionen mit aktuell hinzukommenden Dateien zu vermeiden, werden Dateien aus der aktuellen Stunde übersprungen.

Wenn das Ganze bei Deinen Tests vernünftig aussieht, könnten Schleifen für alle Häuser sowie alle Kameras "außen herumgelegt" werden.
Die Zielordner würde ich übrigens nicht
Y:\FTP\Haus1\Kamera5\27_03_2012_2200
sondern eher
Y:\FTP\Haus1\Kamera5\2012_03_27_2200
nennen (was sich leicht in Zeile 13 entsprechend festlegen ließe) ...

Grüße
bastla
Cyberfrosch
Cyberfrosch 07.04.2012 um 00:19:02 Uhr
Goto Top
Hallo bastla, vielen Dank für deine Ausführungen.
Meine ersten Tests waren leider nicht ganz so erfolgreich.
Zuerst bekam ich Fehlermeldungen von wegen Pfad nicht gefunden, da waren aber nur fehlende Leerzeichen in der Adresse.

Dann wurden endlich wie gewünscht die Ordner mit dem entsprechendem Datum erstellt, doch folgten recht bald
weitere Ordner mit wilden Zahlen als Bezeichnung und zu letztlich hat sich der Explorer der VM zerschossen.
Nach einem Neustart wurden garkeine Skripte mehr ausgeführt, erst eine Systemwiederherstellung brachte Besserung.
Jetzt habe ich jedoch immer noch das Problem mit folgender Meldung (Ordner wurden korrekt erstelt)

http://www.fotos-hochladen.net/view/unbenannt1ampl02ftx.jpg

Des weiteren werden lediglich die Ordner erstellt ohne das die Bilder verschoben werden (echo wurde entfernt).
Weil ich aber der eingesetzten VM nicht mehr traue habe ich beschlossen das Skript erneut auf einer frischen VM zu testen.
Dank Ostern habe ich jetzt etwas Zeit dafür.

Was die Integration der weiteren Kameras anbelagt habe ich auch schon eine Idee die ich gerne versuchen möchte,
evtl bekomme ich das ja auch selber hin.
Sonntag werde ich mit den Versuchen auf der neuen VM durch sein, dann poste ich den letzten Stand.

Bis dahin - frohe Ostern
106009
106009 07.04.2012 um 00:27:05 Uhr
Goto Top
Hi,

nur mal so nebenbei, da das Foto imo unbrauchbar ist:
Text aus der Konsole lässt sich in die Zwischenablage übernehmen und auch hier als Text einfügen. face-smile
Rechtsklick > Markieren, mit linker Maustaste über den Text fahren und Maustaste wieder loslassen, rechte Maustaste kurz antippen und schon ist der Text im Clipboard.

Gruß
bastla
bastla 07.04.2012 um 00:29:46 Uhr
Goto Top
Hallo Cyberfrosch!

Der Fehlermeldung nach hast Du in einer Schleife ein "setlocal" ohne korrespondierendes "endlocal" ...
Dann wurden endlich wie gewünscht die Ordner mit dem entsprechendem Datum erstellt, doch folgten recht bald weitere Ordner mit wilden Zahlen als Bezeichnung
Die Zerlegung des Dateinamens erfolgt zunächst auf Basis der Trennzeichen "_" (es wird immer der dadurch entstehende 3. Teil - siehe Zeile 11 - verwendet) und danach anhand des Musters "JJJJMMTThhmm" (Zeile 13) - wenn daher die Dateinamen dem Beispiel entsprechen, sollte das funktionieren ...

Grüße
bastla
bastla
bastla 07.04.2012 um 00:32:40 Uhr
Goto Top
... oder noch besser: im Systemmenü (Alt + Leertaste) des CMD-Fensters unter "Eigenschaften / Optionen" den "Quick Edit-Modus" aktivieren - dann genügt ein Markieren mit linker Maustaste und ein Rechtsklick zum Kopieren und, wenn keine Markierung aktiv ist, ein Rechtsklick zum Einfügen ...

Grüße
bastla
106009
106009 07.04.2012 um 00:36:57 Uhr
Goto Top
*hust* habe ich was Anderes geschrieben?
bastla
bastla 07.04.2012 um 00:41:36 Uhr
Goto Top
@106009
*hust* habe ich was Anderes geschrieben?
Ein klein wenig face-wink - Du beschreibst das Ganze (richtig) bei deaktiviertem "Quick Edit-Modus" ...

Grüße
bastla
106009
106009 07.04.2012 um 00:50:55 Uhr
Goto Top
@bastla
Über die Aktivierung des Quick-Edit-Modus kann man geteilter Meinung sein. Ich möchte nicht beim Aktivieren des geöffeten Konsolenfensters mit der Maustaste gleich eine Markierung, und wenn es nur auf einem Zeichen ist haben.

Gruß
bastla
bastla 07.04.2012 um 00:58:17 Uhr
Goto Top
Hallo ollidolli!
Ich möchte nicht beim Aktivieren des geöffeten Konsolenfensters mit der Maustaste gleich eine Markierung, und wenn es nur auf einem Zeichen ist haben.
Das ist sicherlich Geschmackssache - da sich die Markierung ja eigentlich nur bei einem gerade laufenden Batch auswirkt, habe ich kein Problem damit ...

Grüße
bastla
Cyberfrosch
Cyberfrosch 12.04.2012 um 19:27:25 Uhr
Goto Top
So, eine neue VM wurde aufgesetzt und geupdated.
Weiter konnte ich das Datumsformat anpassen und habe es jetzt auch geschafft das Skript "dauerhaft" laufen zu lassen.
Jetzt habe ich einen Lösungsansatz wie ich alle Kameras in ein Skript bekomme.
Würdet ihr auch alle in eins packen oder viele kleine erstellen und die nacheinander aufrufen ?
Hier der Zwischenstand:


:anfang
@echo off & setlocal enabledelayedexpansion

set "Person=Testperson"

set "Kamera=Kamera 1"

set "Quelle=C:\eingang\%Person%\%Kamera%"
set "Ziel=C:\archiv\%Person%\%Kamera%"
set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%"
for /f "delims=" %%i in ('dir /b "%Quelle%\*.jpg"^|findstr /v "%AktZeit%"') do (
for /f "tokens=3 delims=_" %%a in ("%%i") do (
set "Timestamp=%%a"
set "Ordner=!Timestamp:~0,4!_!Timestamp:~4,2!_!Timestamp:~6,2!_!Timestamp:~8,2!00"
md "%Ziel%\!Ordner!" 2>nul
move "%%i" "%Ziel%\!Ordner!\"
)
)
endlocal


rem ---------- Ende Testperson Kamera 1


@echo off & setlocal enabledelayedexpansion

set "Person=Testperson"

set "Kamera=Kamera 2"

set "Quelle=C:\eingang\%Person%\%Kamera%"
set "Ziel=C:\archiv\%Person%\%Kamera%"
set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%"
for /f "delims=" %%i in ('dir /b "%Quelle%\*.jpg"^|findstr /v "%AktZeit%"') do (
for /f "tokens=3 delims=_" %%a in ("%%i") do (
set "Timestamp=%%a"
set "Ordner=!Timestamp:~0,4!_!Timestamp:~4,2!_!Timestamp:~6,2!_!Timestamp:~8,2!00"
md "%Ziel%\!Ordner!" 2>nul
move "%%i" "%Ziel%\!Ordner!\"
)
)
endlocal


rem ---------- Ende Testperson Kamera 2

goto anfang


Das Skript läuft wie gesagt im Dauerlauf und erstellt mir auch brav die Ordner,
leider verschiebt es keine einzige Datei.
Die Console gibt immer nur folgendes aus:

Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.

Was kann ich ändern damit die Bilder gefunden werden ?

Und wie kann ich es beeinflussen ob die Bilder der aktuellen Stunde ignoriert werden oder die der aktuellen 2 Stunden / Tage ?
bastla
bastla 12.04.2012, aktualisiert am 18.10.2012 um 18:50:37 Uhr
Goto Top
Hallo Cyberfrosch!

Wenn Du die passende Formatierung für das Posten Deines Codes verwendet hättest, könnte ich Dir jetzt die entsprechende Zeilennummer nennen ...

Versuch es mit folgender Verschiebezeile:
move "%Quelle%\%%i" "%Ziel%\!Ordner!\"
Und wie kann ich es beeinflussen ob die Bilder der aktuellen Stunde ignoriert werden oder die der aktuellen 2 Stunden / Tage ?
Mit
set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%"
wird in den Timestamp neben dem Datum auch die aktuelle Stunde (siehe letzten Teil) eingefügt - wenn Du die Stunde weglässt, wird nur auf den Tag verglichen (und es werden somit alle Bilder des aktuellen Tages übersprungen) - für andere Zeiträume müsste jeweils eine zusätzliche Berechnung (zur Abschreckung face-wink siehe zB hier) erfolgen ...

In der derzeitige Fassung wird einfach (am Beispiel der aktuellen Stunde) jede Datei, deren Name "2012041219" enthält, übersprungen - dazu muss nur einmalig (mit "|findstr /v "%AktZeit%"") gefiltert werden ...

Grüße
bastla
Cyberfrosch
Cyberfrosch 24.04.2012 um 23:38:01 Uhr
Goto Top
Also, ich möchte hier nun abschließen und natürlich noch etwas los werden.
Der letzte Hinweis von bastla war entscheidend, meine Batch läuft nun dauerhaft und stabil.
Leider hatte ich in den letzten 12 Tagen reihenweise Fehlschläge die kaum einzugrenzen waren.
Letztlich habe habe ich einen neuen Server genommen, Hyper-V + VM aufgesetzt und voila - es lief.
Ich gehöre zum Glück nicht zu den Menschen die schnell aufgeben und ich wollte hier kein "geht nicht"
posten ohne vernünftig getestet zu haben, daher die längere Funkstille.

Die VM ist mit der Batch nun in der Lage binnen von 10 Sekunden rund 760 Fotos weg zu sortieren,
gerät aber in Schwierigkeiten wenn es mehr als einen Tag nicht lief und sich entsprechend viele Bilder angesammelt haben.
Dann hilft nur 90% der Bilder temporär verschieben, die Batch anwerfen und wenn sie rennt die ausgelagerten Bilder
zum Sortieren in den Eingangsordner zurückzuspielen.

Läuft die Batch mit "goto anfang" und ":anfang" im Permanentbetrieb belastet sie die CPU der VM (4 virtuelle Kerne)
zu 50-60% aus. Daher ist es ein guter Weg sie z.B. stündlich laufen zu lassen.

Leider "verheddern" sich die Kameras scheinbar bei der Uhrzeit. Als folge kommt es permanent zu Kollisionen
bzw. zu der Meldung:

"Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird"

Das liegt aber definitiv an den Kameras welche ihrer Zeit eine Stunde hinterher hinken, hat mich aber doch etwas Zeit gekostet.

Ich möchte mich nun bei allen für die Postings bedanken.
Es hat sich für mich wieder einmal bestätigt das dieses Forum eine sehr wervolle Quelle für Wissen, Tips und Austausch mit anderen IT'lern ist.
Ich hoffe mich einmal in einem Thread erkenntlich zeigen zu können wenn wer anderes Hilfe braucht.
60730
60730 25.04.2012 um 12:25:35 Uhr
Goto Top
Moin,

[1/2 OT]
Das liegt aber definitiv an den Kameras welche ihrer Zeit eine Stunde hinterher hinken, hat mich aber doch etwas Zeit gekostet.
  • Schau mal welchen NTP Server die haben und vor allem, in welcher Zeitzone die meinen zu sein.
/[
1/2 OT]

Ps: "Danke für die "abschliessende" Info.

Jedoch - wenn es denn wie von Bastala angesprochen in Codezeilen stehen würde...

Hole das doch bitte nach und dann würde ich dir vielleicht auch etwas wegen:
Würdet ihr auch alle in eins packen oder viele kleine erstellen und die nacheinander aufrufen ?
empfehlen.
Kürze das auf ein minimum zusammen, doppelte Schritte einmal und ob das bei deiner Menge nun so in einem Abwasch oder doch besser ohn call : sondern mit call bilderverschieben.cmd funktioniert - letzteres vermute ich.
Mußt du selber herausfinden.

Ich vermute bei 8 Kameras wären 8 getrennte Aufrufe für jeden Unterordner schneller - aber siehe unten.
Schreib es so, das du bei Änderungen nur einmal Ändern mußt und nicht xxxxx mal.

setlocal enabledelayedexpansion 
:parameter
set "Person=Testonkel" & set "Kamera=Kamera 1" & call :hauwech  
set "Person=Testtante" & set "Kamera=Kamera 2" & call :hauwech  
goto end oder Anfang

:hauwech

set "Quelle=C:\eingang\%Person%\%Kamera%"  
set "Ziel=C:\archiv\%Person%\%Kamera%"  
set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%"  
for /f "delims=" %%i in ('dir /b "%Quelle%\*.jpg"^|findstr /v "%AktZeit%"') do (  
for /f "tokens=3 delims=_" %%a in ("%%i") do (  
set "Timestamp=%%a"  
set "Ordner=!Timestamp:~0,4!_!Timestamp:~4,2!_!Timestamp:~6,2!_!Timestamp:~8,2!00"  
md "%Ziel%\!Ordner!" 2>nul  
move "%%i" "%Ziel%\!Ordner!\"  
)
)
endlocal

Alternativ zweiter Ansatz ist dann logischerweise:
call c:\meinzeug\haudiebilderwech.cmd Testtante Kamera2

und
set "Quelle=C:\eingang\%1\%2"  
set "Ziel=C:\archiv\%1\%2"  
echo usw. usf