Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Eine Batch zum Ordnererstellen und Verschieben

Frage Entwicklung Batch & Shell

Mitglied: Cyberfrosch

Cyberfrosch (Level 1) - Jetzt verbinden

29.03.2012, aktualisiert 18.10.2012, 4785 Aufrufe, 18 Kommentare

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
Mitglied: 60730
29.03.2012 um 21:15 Uhr
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
Bitte warten ..
Mitglied: bastla
29.03.2012 um 21:32 Uhr
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
Bitte warten ..
Mitglied: 60730
30.03.2012 um 10:13 Uhr
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
Bitte warten ..
Mitglied: pieh-ejdsch
30.03.2012 um 10:24 Uhr
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.

01.
anstatt so 
02.
Y:\FTP\Haus1\Kamera1\22_03_2012_1500\00EA2163CFF9(Kamera 5)_0_20120327225341_4388.jpg 
03.
 
04.
lieber so 
05.
Y:\FTP\Haus1\Kamera1\00EA2163CFF9(Kamera 5)_0_2012032722\5341_4388.jpg 
06.
 
07.
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
Bitte warten ..
Mitglied: Cyberfrosch
01.04.2012, aktualisiert 18.10.2012
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:



http://www.administrator.de/forum/variablen-und-wildcards%3f%3f%3f-1494 ...

@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)...
Bitte warten ..
Mitglied: bastla
01.04.2012 um 21:09 Uhr
Hallo Cyberfrosch!

Wenn ich Dich einigermaßen richtig verstanden habe, sollte das für eine Kamera eines Hauses etwa so gehen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Haus=Haus1" 
03.
set "Kamera=Kamera5" 
04.
 
05.
set "Quelle=X:\FTP\%Haus%\%Kamera%" 
06.
set "Ziel=Y:\FTP\%Haus%\%Kamera%" 
07.
 
08.
set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%" 
09.
 
10.
for /f "delims=" %%i in ('dir /b "%Quelle%\*.jpg"^|findstr /v "%AktZeit%"') do ( 
11.
    for /f "tokens=3 delims=_" %%a in ("%%i") do ( 
12.
        set "Timestamp=%%a" 
13.
        set "Ordner=!Timestamp:~6,2!_!Timestamp:~4,2!_!Timestamp:~0,4!_!Timestamp:~8,2!00" 
14.
        md "%Ziel%\!Ordner!" 2>nul 
15.
        echo move "%%i" "%Ziel%\!Ordner!\" 
16.
17.
)
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
Bitte warten ..
Mitglied: Cyberfrosch
07.04.2012 um 00:19 Uhr
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
Bitte warten ..
Mitglied: 106009
07.04.2012 um 00:27 Uhr
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.
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ß
Bitte warten ..
Mitglied: bastla
07.04.2012 um 00:29 Uhr
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
Bitte warten ..
Mitglied: bastla
07.04.2012 um 00:32 Uhr
... 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
Bitte warten ..
Mitglied: 106009
07.04.2012 um 00:36 Uhr
*hust* habe ich was Anderes geschrieben?
Bitte warten ..
Mitglied: bastla
07.04.2012 um 00:41 Uhr
@106009
*hust* habe ich was Anderes geschrieben?
Ein klein wenig - Du beschreibst das Ganze (richtig) bei deaktiviertem "Quick Edit-Modus" ...

Grüße
bastla
Bitte warten ..
Mitglied: 106009
07.04.2012 um 00:50 Uhr
@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ß
Bitte warten ..
Mitglied: bastla
07.04.2012 um 00:58 Uhr
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
Bitte warten ..
Mitglied: Cyberfrosch
12.04.2012 um 19:27 Uhr
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 ?
Bitte warten ..
Mitglied: bastla
12.04.2012, aktualisiert 18.10.2012
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 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
Bitte warten ..
Mitglied: Cyberfrosch
24.04.2012 um 23:38 Uhr
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.
Bitte warten ..
Mitglied: 60730
25.04.2012 um 12:25 Uhr
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.

01.
setlocal enabledelayedexpansion  
02.
:parameter 
03.
set "Person=Testonkel" & set "Kamera=Kamera 1" & call :hauwech 
04.
set "Person=Testtante" & set "Kamera=Kamera 2" & call :hauwech 
05.
goto end oder Anfang 
06.
 
07.
:hauwech 
08.
 
09.
set "Quelle=C:\eingang\%Person%\%Kamera%" 
10.
set "Ziel=C:\archiv\%Person%\%Kamera%" 
11.
set "AktZeit=%date:~-4%%date:~-7,2%%date:~-10,2%%time:~,2%" 
12.
for /f "delims=" %%i in ('dir /b "%Quelle%\*.jpg"^|findstr /v "%AktZeit%"') do ( 
13.
for /f "tokens=3 delims=_" %%a in ("%%i") do ( 
14.
set "Timestamp=%%a" 
15.
set "Ordner=!Timestamp:~0,4!_!Timestamp:~4,2!_!Timestamp:~6,2!_!Timestamp:~8,2!00" 
16.
md "%Ziel%\!Ordner!" 2>nul 
17.
move "%%i" "%Ziel%\!Ordner!\" 
18.
19.
20.
endlocal
Alternativ zweiter Ansatz ist dann logischerweise:
01.
call c:\meinzeug\haudiebilderwech.cmd Testtante Kamera2
und
01.
set "Quelle=C:\eingang\%1\%2" 
02.
set "Ziel=C:\archiv\%1\%2" 
03.
echo usw. usf
</code>
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...