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

Mit Batchdatei auslesen ob eine bestimmte Datei existiert

Frage Entwicklung Batch & Shell

Mitglied: KeiosID

KeiosID (Level 1) - Jetzt verbinden

02.12.2008, aktualisiert 18.12.2008, 7380 Aufrufe, 7 Kommentare

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
Mitglied: Iwan
02.12.2008 um 10:43 Uhr
hallo,

DAU-sicher? sowas gibt es nicht, wie ich in meiner langjährigen Erfahrung feststellen musste

Aufruf der Batch mit: batch.bat DATEINAME
01.
set DATEINAME=%1 
02.
REM hier fängt der Spass an 
03.
:Start 
04.
REM existiert die Datei, macht er weiter 
05.
if exist %DATEINAME% goto WEITER 
06.
goto PAUSE 
07.
 
08.
REM 3 Sekunden Pause, bevor er nochmal guckt, ob die Datei existiert 
09.
:PAUSE 
10.
ping localhost -n 3 
11.
goto Start 
12.
 
13.
:WEITER 
14.
DeineWeiterenBefehle...
ist erstmal ungetestet, aber zumindest ein Ansatz
Bitte warten ..
Mitglied: Ren
02.12.2008 um 11:04 Uhr
damit das ganze noch funktioniert, wenn im Verzeichnis oder in dem Dateinamen ein Leerzeichen vorkommt:
01.
set "DATEINAME=%~1" 
02.
 
03.
:Start 
04.
REM existiert die Datei, macht er weiter 
05.
if exist "%DATEINAME%" goto WEITER 
06.
goto PAUSE 
07.
 
08.
REM 3 Sekunden Pause, bevor er nochmal guckt, ob die Datei existiert 
09.
:PAUSE 
10.
ping localhost -n 3 >nul 
11.
goto Start 
12.
 
13.
:WEITER 
14.
DeineWeiterenBefehle...
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:
01.
if exist "%DATEINAME%" if not exist "%DATEINAME%\*.*" goto WEITER  
02.
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
auch ich habe es nicht getestet...
Gruß
Bitte warten ..
Mitglied: 60730
02.12.2008 um 11:33 Uhr
Servus,

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:

01.
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ß
Bitte warten ..
Mitglied: Ren
02.12.2008 um 11:45 Uhr
richtig, die Leerzeichen wieder vergessen. Ich habe meinen Beitrag noch einmal korrigiert. Zu starten wäre die Batch so:
01.
batch.bat "X:\Pfad der Datei\DATEI NAME.JPG"
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ß
Bitte warten ..
Mitglied: TheUntouchable
02.12.2008 um 12:03 Uhr
So hab das ganze nun noch ein wenig aufgebohrt :P Obs gebraucht wird oder nicht weis ich nicht, mir war nur langweilig ;)

01.
@echo off 
02.
 
03.
:: Überprüfe ob ein Aufrufparameter mitgegeben worden ist 
04.
:: Wenn nein = Beende Batch 
05.
IF "%~1"=="" ECHO Kein Aufrufparameter! && pause >nul && EXIT 
06.
 
07.
set "DATEI=%~1" 
08.
set STARTZEIT=%time:~0,8% 
09.
::Startzeit wird in Sekunden umgewandelt damit man rechnen kann 
10.
for /f "delims=:, tokens=1-3" %%i in ("%time%") do Set /a TStart=%%i*3600+%%j*60+%%k  
11.
 
12.
:PRUEFUNG 
13.
CLS 
14.
ECHO. 
15.
ECHO Die zu ueberpruefende Datei lautet: 
16.
ECHO "%DATEI%" 
17.
ECHO. 
18.
ECHO Ueberpruefung um %STARTZEIT% gestartet.. 
19.
ECHO. 
20.
ECHO Status: 
21.
::Ueberpruefe ob Datei vorhanden, wenn ja wird 3 mal ein Piepton ausgegeben 
22.
IF EXIST "%DATEI%" ECHO %time:~0,8% Datei ist vorhanden!  && pause >nul && EXIT 
23.
::Wenn nein, wird 3 mal der localhost gepingt und von vorne geprueft 
24.
::Endzeit wird in Sekunden umgewandelt damit man rechnen kann 
25.
for /f "delims=:, tokens=1-3" %%i in ("%time%") do Set /a TEnde=%%i*3600+%%j*60+%%k 
26.
::Dauer wird ausgerechnet und in den Titel geschrieben 
27.
Set /a TDauer=TEnde-TStart 
28.
title Suchdauer: %TDauer% s 
29.
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
Bitte warten ..
Mitglied: KeiosID
02.12.2008 um 13:49 Uhr
Also bisher schon mal vielen Dank für den Input.

Bin schon fleißig am bastln und testen, kann auch schon die ersten Erfolge verzeichnen.

Wennd das Ding fertig ist, werde ich es posten und versuchen zu kommentieren.

Dank und Grüße

Keios
Bitte warten ..
Mitglied: KeiosID
18.12.2008 um 12:50 Uhr
So, es funktioniert und hier noch der versprochene Code...

Verbesserungen werden vom BatchNoob gerne angenommen



"C:\Program Files\TEC-IT\BCStudio9\Bin\bcstudio.exe" -datalist="C:\Streamserve\Datamatrix\sequenz_AboOut00_V_AH_2009-1_ohne_TEST_KLEIN_DM.txt " -outlist="C:\Streamserve\Datamatrix\outlist_AboOut00_V_AH_2009-1_ohne_TEST_KLEIN_DM.txt " -s="c:\streamserve\datamatrix\Matrix.bc" -w=22000 -h=22000
set DATEINAME=C:\Streamserve\Datamatrix\codes\190019039784TESTKZ.bmp

:Start
if exist "%DATEINAME%" goto WEITER if not exist "%DATEINAME%" goto Next
:Next
ping localhost -n 3 >nul
goto Start
:WEITER
move C:\Streamserve\Datamatrix\Versand\AboOut00_V_AH_2009-1_ohne_TEST_KLEIN_DMC*.txt C:\Streamserve\Print\Adware\Versandunterlagen\
exit
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...