Mit Batchdatei auslesen ob eine bestimmte Datei existiert
Hallo,
ich hoffe mal, das ist mit einer Batchdatei möglich.
Ich habe ein Programm, dass mir eine große Anzahl an .jpgs erzeugt, die ich für den Druck benötige. Da ich hier einige Dateien habe , bei denen ich über 130.000 Bilder erzeuge,
muss ich mit dem Druck warten, bis das letzte Bild erzeugt ist, das dauert mit allem Drum und dran bis zu 50 Min.
Meine Idee:
Ich kann mit meinem Programm eine Batchdatei erzeugen und auch aufrufen.
Ist es möglich, eine Batchdatei so zu programmieren, dass ich Ihr den Namen der letzten Bilddatei mitgebe, und diese
dann solange ein bestimmtes Verzeichnis überwacht, bis diese Datei vorhanden ist.
Ich denke da an eine FileExist Lösung.
Wenn diese Bedingung erfüllt ist, soll die Batchdatei noch eine bestimmte Datei von einem Verzeichnis in ein weiteres Verzeichnis verschieben.
War das jetzt verständlich?
Ich setze mich eigentlich sehr wenig mit Programmierung auseinander, aber manchmal komm ich nicht drumherum.
Von daher wäre eine DAU sichere Erklärung spitze.
Danke
Grüße
KEIOS
ich hoffe mal, das ist mit einer Batchdatei möglich.
Ich habe ein Programm, dass mir eine große Anzahl an .jpgs erzeugt, die ich für den Druck benötige. Da ich hier einige Dateien habe , bei denen ich über 130.000 Bilder erzeuge,
muss ich mit dem Druck warten, bis das letzte Bild erzeugt ist, das dauert mit allem Drum und dran bis zu 50 Min.
Meine Idee:
Ich kann mit meinem Programm eine Batchdatei erzeugen und auch aufrufen.
Ist es möglich, eine Batchdatei so zu programmieren, dass ich Ihr den Namen der letzten Bilddatei mitgebe, und diese
dann solange ein bestimmtes Verzeichnis überwacht, bis diese Datei vorhanden ist.
Ich denke da an eine FileExist Lösung.
Wenn diese Bedingung erfüllt ist, soll die Batchdatei noch eine bestimmte Datei von einem Verzeichnis in ein weiteres Verzeichnis verschieben.
War das jetzt verständlich?
Ich setze mich eigentlich sehr wenig mit Programmierung auseinander, aber manchmal komm ich nicht drumherum.
Von daher wäre eine DAU sichere Erklärung spitze.
Danke
Grüße
KEIOS
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103096
Url: https://administrator.de/contentid/103096
Ausgedruckt am: 15.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
hallo,
DAU-sicher? sowas gibt es nicht, wie ich in meiner langjährigen Erfahrung feststellen musste
Aufruf der Batch mit: batch.bat DATEINAME
ist erstmal ungetestet, aber zumindest ein Ansatz
DAU-sicher? sowas gibt es nicht, wie ich in meiner langjährigen Erfahrung feststellen musste
Aufruf der Batch mit: batch.bat DATEINAME
set DATEINAME=%1
REM hier fängt der Spass an
:Start
REM existiert die Datei, macht er weiter
if exist %DATEINAME% goto WEITER
goto PAUSE
REM 3 Sekunden Pause, bevor er nochmal guckt, ob die Datei existiert
:PAUSE
ping localhost -n 3
goto Start
:WEITER
DeineWeiterenBefehle...
damit das ganze noch funktioniert, wenn im Verzeichnis oder in dem Dateinamen ein Leerzeichen vorkommt:
In Zeile 5 besteht noch das Problem, dass das Programm theoretisch auch dann weiter macht, wenn gar keine Datei %DATEINAME%, sondern nur ein Verzeichnis mit diesem Namen existiert. Also vielleicht noch prüfen, ob es ein Verzeichnis ist, oder wirklich die Datei:
auch ich habe es nicht getestet...
Gruß
set "DATEINAME=%~1"
:Start
REM existiert die Datei, macht er weiter
if exist "%DATEINAME%" goto WEITER
goto PAUSE
REM 3 Sekunden Pause, bevor er nochmal guckt, ob die Datei existiert
:PAUSE
ping localhost -n 3 >nul
goto Start
:WEITER
DeineWeiterenBefehle...
if exist "%DATEINAME%" if not exist "%DATEINAME%\*.*" goto WEITER
if exist "%DATEINAME%\*.*" echo Es existiert ein Verzeichnis mit dem Namen "%DATEINAME%". So ist es nicht möglich, eine Datei mit dem selben Namen zu speichern. Abbruch. & goto :eof
Gruß
Servus,
kann so nicht funktionieren ;-(
Denn dann (leerzeichen) müsste die Abfrage ja lauten:
auch ungetestet - und wenn mehrere Leerzeichen drin sein sollten %3 usw.
Gruß
damit das ganze noch funktioniert, wenn im Verzeichnis oder in dem Dateinamen ein Leerzeichen vorkommt:
kann so nicht funktionieren ;-(
Denn dann (leerzeichen) müsste die Abfrage ja lauten:
if not %2 =="" echo "Leerzeichen gefunden" && if exist "%1 %2">nul goto weiter
auch ungetestet - und wenn mehrere Leerzeichen drin sein sollten %3 usw.
Gruß
richtig, die Leerzeichen wieder vergessen. Ich habe meinen Beitrag noch einmal korrigiert. Zu starten wäre die Batch so:
Das %~1 entfernt die umschließenden Anführungszeichen dann wieder, falls sie gesetzt wurden, Dateiname wäre dann also: X:\Pfad der Datei\DATEI NAME.JPG. Damit die überprüfung klappt, baue ich sie dann wieder drum herum, in der Abfrage. if exist "X:\Pfad der Datei\DATEI NAME.JPG". Dabei wird alles zwischen dem ersten und zweiten " als ein Argument betrachtet.
Gruß
batch.bat "X:\Pfad der Datei\DATEI NAME.JPG"
Gruß
So hab das ganze nun noch ein wenig aufgebohrt :P Obs gebraucht wird oder nicht weis ich nicht, mir war nur langweilig ;)
Wie schon oben erwähnt muss hier das ganze mit ->batchname.bat "Image Name.Endung"<- aufgerufen werden
Leider funktioniert die verstrichene Zeit Anzeige nicht richtig, vielleicht kann sich das noch wer anschaun ;)
Ach ja, hier kann man auch gut erkennen das 3 Pings nur 2 Sek sind :P
@echo off
:: Überprüfe ob ein Aufrufparameter mitgegeben worden ist
:: Wenn nein = Beende Batch
IF "%~1"=="" ECHO Kein Aufrufparameter! && pause >nul && EXIT
set "DATEI=%~1"
set STARTZEIT=%time:~0,8%
::Startzeit wird in Sekunden umgewandelt damit man rechnen kann
for /f "delims=:, tokens=1-3" %%i in ("%time%") do Set /a TStart=%%i*3600+%%j*60+%%k
:PRUEFUNG
CLS
ECHO.
ECHO Die zu ueberpruefende Datei lautet:
ECHO "%DATEI%"
ECHO.
ECHO Ueberpruefung um %STARTZEIT% gestartet..
ECHO.
ECHO Status:
::Ueberpruefe ob Datei vorhanden, wenn ja wird 3 mal ein Piepton ausgegeben
IF EXIST "%DATEI%" ECHO %time:~0,8% Datei ist vorhanden! && pause >nul && EXIT
::Wenn nein, wird 3 mal der localhost gepingt und von vorne geprueft
::Endzeit wird in Sekunden umgewandelt damit man rechnen kann
for /f "delims=:, tokens=1-3" %%i in ("%time%") do Set /a TEnde=%%i*3600+%%j*60+%%k
::Dauer wird ausgerechnet und in den Titel geschrieben
Set /a TDauer=TEnde-TStart
title Suchdauer: %TDauer% s
ECHO %time:~0,8% Datei nicht gefunden.. && ping localhost -n 3 >nul && GOTO :PRUEFUNG
Wie schon oben erwähnt muss hier das ganze mit ->batchname.bat "Image Name.Endung"<- aufgerufen werden
Leider funktioniert die verstrichene Zeit Anzeige nicht richtig, vielleicht kann sich das noch wer anschaun ;)
Ach ja, hier kann man auch gut erkennen das 3 Pings nur 2 Sek sind :P