mandragora
Goto Top

Batch File - Check ob Datei mit aktuellem Datum Uhrzeit vorhanden - Darf immer nur eine Datei vorhanden sein

Hallo Leute,

Ich stehe vor dem Problem das ich auf schnellstem Wege ein Batch File machen muss das folgendes macht.

1. Ein File (Bild .bmp) wird durch eine Kamera gemacht und in ein Verzeichnis gelegt.
2. In diesem Verzeichnis muss sicher gestellt sein das sich immer nur 1 BIld befindet und das mit dem letztem Datum / Uhrzeit.
Es kann sein das versehentlich 2 oder mehrere Bilder gemacht werden und das darf nicht sein.
Wenn mehrere Bilder gemacht wurden muss unbedingt sicher gestellt sein das nur das neueste übrig bleibt und die älteren gelöscht werden.

3. weiter muss wenn eben das Bild in das Verzeichnis gelegt wird das Bild sofort in ein anderes Verzeichnis kopiert werden und hier das letzte abgelegte Bild überschreiben.


Klingt jetzt ein wenig verwirrend aber es muss so ablaufen. (Will jetzt nicht näher darauf eingehen.)

Kann mir ev. jemand helfen wie ich das am besten und schnellsten machen kann.

Vielen Dank schon mal für eure Hilfe.

cu
mandragora

Content-ID: 145083

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

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

bastla
bastla 17.06.2010 um 18:41:46 Uhr
Goto Top
Hallo mandragora!

Etwa so (ungetestet):
@echo off & setlocal
set "Ziel=D:\Anderes Verzeichnis\Letztes abgelegtes Bild.jpg"  
cd /d "D:\Bilder"  

:Loop
set "Done="  
for /f "delims=" %%i in ('dir /b /a-d /o-d *.jpg') do (  
    if not defined Done (
        set "Done=True"  
        copy "%%i" "%Ziel%"  
    ) else (
        del "%%i"  
    )
)
goto :Loop
Was 3. anlangt: Da das letzte abgelegte Bild immer überschrieben wird, kann ja eigentlich der Dateiname dieses Bildes immer gleich sein (siehe Zeile 2) ...

Übrigens: Warum kopieren und nicht gleich verschieben?

Grüße
bastla
mandragora
mandragora 18.06.2010 um 08:36:13 Uhr
Goto Top
Hallo bastla,

Vielen Dank für deine schnelle Antwort.

Also ich habe es jetzt mal so probiert:

@echo off & setlocal
set "Ziel=C:\test"
cd /d "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\data"
:Loop
set "Done="
for /f "delims=" %%i in ('dir /b /a-d /o-d *.bmp') do (
if not defined Done (
set "Done=True"
move "%%i" "%Ziel%"
) else (
del "%%i"
)
)
goto :Loop

Habe hier gemoved - hast recht gehabt ist besser.
Die Datei wird gecheckt und auch in das Zeilverzeichnis verschoben.
Allerdings wird hier die bestehende Datei nicht überschrieben sondern angehängt.
Die Dateinamen die von der Kamera produziert werden sind auch immer unterschiedlich. Der Name des überschriebenen Bilder ist egal wie du richtig schreibst.

Wenn das nach passen würde wäre ich vollkommen glücklich mit dem Script.

cu
mandragora
bastla
bastla 18.06.2010 um 08:56:16 Uhr
Goto Top
Hallo mandragora!
Allerdings wird hier die bestehende Datei nicht überschrieben sondern angehängt.
Du hast als Ziel ja auch nicht den Namen der Datei, sondern nur den Pfad angegeben ...

Grüße
bastla

P.S.: Zum Posten von Batches bitte ""-Formatierung verwenden ...
mandragora
mandragora 18.06.2010 um 09:24:12 Uhr
Goto Top
Hallo bastla,

VIelen Dank
Genau das wars.
Funktioniert nun bestens.

Danke nochmals für deine supertolle Hilfe.

cu
mandragora