thomasneumann
Goto Top

JPG Datei nach kopieren per Batch Datei defekt bzw. unbrauchbar

Hallo zusammen,
habe bereits hier im Forum gesucht jedoch nichts zu diesem Thema gefunden.

Woran könnte es liegen das wenn ich eine Datei ( Foto, JPG ) per Batch Datei kopiere die Kopie
nicht zu öffnen ist ?

Der Inhalt der Batch Datei sieht wie folgt aus:


copy C:\1\????????.jpg C:\2\Foto.jpg
del /f /s /q ì "C:\1"


Die Datei wird auf einem Windows 7 Pro 64 Bit Rechner ausgeführt.


Vielen Dank schonmal vorab !

Content-ID: 267209

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

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

Snowman25
Snowman25 23.03.2015 um 17:53:38 Uhr
Goto Top
Hallo @ThomasNeumann,

Schonmal einen bitweisen Vergleich der Dateien angestoßen? Ich nehme an, dass del die Datei löscht, bevor sie komplett kopiert worden ist.

Ansonsten könnte es sein, dass copy ASCII kopiert. ein JPG sollte aber binär kopiert werden.
Also mach's so:
copy /B C:\1\??????.jpg C:\2\Foto.jpg
/V überprüft nochmal extra die Integrität der Datei nach der Kopie.
Dann solltest du die Quelldatei aber auch nur bei Erfolg löschen:
copy /B /V C:\1\??????.jpg C:\2\Foto.jpg
If errorlevel 1 del /f /s /q "C:\1"  

Gruß,
@Snowman25
ThomasNeumann
ThomasNeumann 23.03.2015 um 19:43:45 Uhr
Goto Top
Hallo Snowman25, erstmal vielen Dank für die schnelle Antwort!

Wenn ich die Datei ändere wie von dir beschrieben wird das Foto aus dem Original Ordner ( 1 ) zwar gelöscht, erscheint aber nicht im Zielordner ( 2 ) face-smile
wshty1
wshty1 23.03.2015 um 22:39:17 Uhr
Goto Top
Hi,

Dass del greift bevor copy fertig ist wage ich zu bezweifeln - der code wird nacheinander abgearbeitet, wenn copy noch nicht fertig ist, kann del auch noch nicht anfangen.

Möglich wäre es dass die datei während des kopiervorganges noch in einem prozess geöffnet ist.

Nachdem copy schon relativ veraltet ist - möchtest du nicht stattdessen robocopy verwenden?

Lg
WinCobold
WinCobold 24.03.2015 um 08:28:38 Uhr
Goto Top
Hallo Thomas,

ich habe noch nie erlebt, dass COPY beim Kopieren einer einzelnen Datei diese Datei verändert hat. Und ROBOCOPY zum Kopieren einer einzelnen Datei ist mit Kanonen auf Spatzen geschossen.

Aber ich gehe davon aus, dass du gar keine einzelne Datei kopierst: Dein COPY nimmt alle JPG-Dateien, deren Name 8 Stellen hat, und kopiert sie hintereinander in die neue Datei Foto.jpg. Und die ist dann natürlich keine gültige Bilddatei mehr, egal ob du /B angegeben hast oder nicht.

Vielleicht erklärst du einfach mal, was du wirklich erreichen möchtest. Wenn du eine Datei nur verschieben willst, kannst du auch MOVE verwenden.

Gruß vom
WinCobold
ThomasNeumann
ThomasNeumann 24.03.2015 um 08:42:02 Uhr
Goto Top
Hallo WinCobold,
also bei dem Vorgang wird mit einer Webcam ein Foto von einem Kunden aufgenommen, die Kamera legt das Foto in einem von mir definierten Ordner ab.

Per "zeitgesteuerte Aufgabe" ( nennt sich glaub ich anders ) wird jede Minute die Batch ausgeführt um ein eventuell vorhandenes Foto in einen Ordner zu kopieren und die Originalfotos bzw. deren Ordner wieder zu säubern.

In dem Zielordner wird dann das Foto weiterverarbeitet, es muss jedoch immer "Foto.jpg" heißen da es sonst nicht erkannt wird.

Es befindet sich also in dem ersten Ordner immer nur ein Kundenfoto welches kopiert, unbenannt und dann im Original gelöscht werden soll face-smile

Viele Grüße, Thomas
wshty1
wshty1 24.03.2015 aktualisiert um 09:23:03 Uhr
Goto Top
Hallo,

das ist teilweise etwas OT und ich möchte hier keine "Linux vs. Windows artige Diskussion" starten.

Meine Meinung ist, dass wenn COPY augenscheinlich zu Problemen führt, man Alternativen ausprobieren sollte; dazu gehört robocopy nunmal, da es auch ein bordmittel ist - wenn robocopy HILFT, kann man es doch auch verwenden, egal, ob man dann "mit Kanonen auf Spatzen" schießt.
Kann natürlich auch sein, dass robocopy NICHT hilft (möglicherweise genauso wenig wie andere Programme) - dann hat man das Programm selbst, aber schon mal als Fehlerquelle ausgeschlossen und kann weitersuchen, zb, ob der Virenscanner aktiviert ist und ob die beiden Verzeichnisse vom automatischen Scan ausgeschlossen sind.

Des Weiteren könnte man über die Routine des Scripts nachdenken - so zb., dass es möglich ist, dass COPY (oder alle anderen) nicht damit zurecht kommen, dass das Foto während des Kopiervorganges umbenannt wird - daher könnte man das Foto mit Originalnamen kopieren, dann das Original löschen und dann in einer extra batch (oder in der gleichen - sollte fast egal sein) dann das Rename anstoßen.

Lg
WinCobold
WinCobold 24.03.2015 um 09:57:12 Uhr
Goto Top
Hallo Thomas,

ist denn auch tatsächlich keine Foto.jpg in dem zweiten Ordner vorhanden? Nicht dass da eine alte (und defekte) Datei steht, die nie überschrieben wird.

Und lass doch mal den DEL weg. Dann kannst du nach dem Kopieren vergleichen, was in den beiden Ordnern steht. Mach mal einen DIR in beiden Ordnern und stell uns den hier rein, vielleicht kann man da ja was erkennen.

Achja: wenn du die Abfrage auf den ERRORLEVEL so eingebaut hast, wie sie Snowman25 vorgeschlagen hat, und die Datei dann gelöscht wurde, heißt das, dass beim Kopieren ein Fehler aufgetreten ist. Gibt es denn irgendwelche Meldungen beim Ausführen der Batch?

Gruß vom
WinCobold
Snowman25
Snowman25 24.03.2015 aktualisiert um 10:56:59 Uhr
Goto Top
Zitat von @WinCobold:

Achja: wenn du die Abfrage auf den ERRORLEVEL so eingebaut hast, wie sie Snowman25 vorgeschlagen hat, und die Datei dann
gelöscht wurde, heißt das, dass beim Kopieren ein Fehler aufgetreten ist. Gibt es denn irgendwelche Meldungen beim
Ausführen der Batch?
*facepalm*
Wieso fällt mir erst jetzt auf, dass ich die Datei lösche, wenn ein Fehler aufgetreten ist?
Das sollte natürlich andersherum sein!
COPY /B /V C:\1\??????.jpg C:\2\Foto.jpg 
IF errorlevel 1 @ECHO Fehler & @PAUSE & GOTO :EOF

DEL /f /s /q "C:\1"  

Gruß,
@Snowman25
FloJoCNC
FloJoCNC 03.04.2015 um 02:42:41 Uhr
Goto Top
Hallo,

Ich habe einen Script geschrieben, den einfach in eine Batch geschrieben, diese nur noch in eine Batch Kopieren und dann kann das kopieren losgehen

Florian


(at)echo off
title Daten Kopierer

:Datei
cls
set /p pfad=Dateipfad der zu Kopierenden Datei eingeben:

:EndDatei
cls
set /p efile=Dateipfad der Neuen Datei Angeben (mit endung z.B. JPG)

:copy
if not exist %pfad% goto fail1
copy %pfad% %efile%
goto OK

:fail1
cls
echo.
echo Zu Kopierende Datei existiert nicht.
pause>nul
goto Datei

:OK
if not exist %efile% goto nichtg
cls
echo.
echo Datei Erfolgreich Kopiert.
pause>nul
exit

:nichtg
cls
echo.
echo Datei konnte NICHT Kopiert werden.
pause>nul
goto Datei

SRY Hab kein plan wie man so einen Coolen Text mit linien machen kann, aber geht auch so.
BirdyB
BirdyB 03.04.2015 um 08:02:05 Uhr
Goto Top
Zitat von @FloJoCNC:

SRY Hab kein plan wie man so einen Coolen Text mit linien machen kann, aber geht auch so.

Dann solltest du mal die Anleitung zu dem Forum lesen, in dem du dich hier bewegst... Und "geht auch so" kann ich nicht unterschreiben...
Also: Formatierungen in den Beiträgen lesen und den Beitrag nachbessern!
FloJoCNC
FloJoCNC 03.04.2015 um 11:35:15 Uhr
Goto Top
(OK Nochmal)
Hallo,
Ich habe eine Batch Datei geschrieben die man dazu nur in eine Weier Batch Hineinkopiert weden muss,
Ich habe es auf einen Sehr leichten Prinzip aufgebaut

@echo off
 title Daten Kopierer

:Datei
cls
set /p pfad=Dateipfad der zu Kopierenden Datei eingeben (mit endung z.B. .JPG):

:EndDatei
cls
set /p efile=Dateipfad der Neuen Datei Angeben (mit endung z.B. .JPG)

:copy
if not exist %pfad% goto fail1  
copy %pfad% %efile%
goto OK

:fail1
cls
echo.
echo Zu Kopierende Datei existiert nicht.
pause>nul
goto Datei

:OK
if not exist %efile% goto nichtg
cls
echo.
echo Datei Erfolgreich Kopiert.
pause>nul
exit

:nichtg
cls
echo.
echo Datei konnte NICHT Kopiert werden.
pause>nul
goto Datei

Dazu kann am noch damit es die Daten löscht , am springpunkt(OK) sowas einfügen
(also vor exit)
del %pfad%

Ich hoffe das Hilft abe auch ohne Probleme eine JPG datei kopiert und die ist auch heil angekommen.

Florian
FloJoCNC
FloJoCNC 03.04.2015 um 11:35:44 Uhr
Goto Top
so Hoffe das ist jetzt besser