PDA

Vollständige Version anzeigen : DOS Batch If Routine...


--=Franky=--
23.11.2007, 09:34
Hallo zusammen,

ich versuche auf einer CD einen Ordnerinhalt auf existierende Endungen zu untersuchen um dann eine Aktion auszuführen.

Erläuterung:
Ist eine Datei mit dem Namen .mrd vorhanden, dann MRD.bat ausführen (sonst nichts weiter)

Ist eine Datei mit dem Namen .mvx vorhanden, dann MVX.bat ausführen (sonst nichts weiter)

Ist keine von beiden vorhanden dann ASF.bat ausführen.
Eine der 3 Arten trifft immer zu, denn sonst wäre die CD so nicht erstellt worden.

Das einzelne Ausführen der MRD- und MVX.bat Dateien funktioniert, nur das nur die Bedingungen erfüllt werden klappt noch nicht so wie es soll. :rolleyes:

DOS ist schon so lange her ;)


REM Start.bat

@ECHO OFF

CD ASF-Daten

IF EXIST *.mrd GOTO MRD

IF EXIST *.mvx GOTO MVX


GOTO ASF

:MRD
CD..
CD BO-Software
Start MRD.bat


:MVX
CD..
CD BO-Software
Start MVX.bat


:ASF
CD..
CD BO-Software
Start ASF.bat


:ENDE
Exit


Der momentane Stand ist, dass immer auch die nicht erwünschten Batches ausgeführt werden.
Helft mir doch mal auf die Sprünge.

Joachim Hofmann
23.11.2007, 12:15
Sieht doch fast richtig aus.
Wenns nur darum geht, die nicht erwünschten Batches anzuspringen, brauchst du doch nur nach dem jeweiligen Block
ein
GOTO ENDE

hinschreiben. Die :ENDE Marke hast Du doch schon selbst definiert!


Alternativ kann man ab Windows NT auch GOTO :EOF schreiben. (springt komplett ans Ende auch ohne Marke).

(Seit DOS-Zeiten hat sich aber im Hintergrund einiges erweitert.
Siehe die Datei "c:\WINDOWS\Help\ntcmds.chm"
)

Übrigens wird das START nur für Windows-Programme gebraucht. Bei Batchaufrufen reicht "Nichts" davor oder ein CALL.
Kleine Falle: ein EXIT in einer Unterbatch fürt dazu, daß die Ausführung nicht wieder an den Aufrufer zurückgeht.

--=Franky=--
23.11.2007, 13:15
Danke für Deine Ratschläge,

bin soeben auch auf eine Lösung gekommen, siehe folgenden Code:


@ECHO OFF

REM ###Öffnen der Kurzanleitung###
Start KurzInfo.txt


REM ###Einlesen der Videodateien um die relevanten Videos zu Wiederzugeben###
CD Video-Daten

IF EXIST *.mrd GOTO MRD

IF EXIST *.mvx GOTO MVX

REM ###Sprungroutinen zu den Batchdateien im BO-Software Ordner###

REM ###Wenn keine der o.g. vorhanden, dann exitieren nur ASF-Daten###
GOTO ASF

:MRD
CD..
CD BO-Software
Start MRD.bat
Exit

:MVX
CD..
CD BO-Software
Start MVX.bat
Exit

:ASF
CD..
CD BO-Software
Start ASF.bat
Exit


Das Verlassen der Routine durch Exit bewirkt im Endergebnis das gleiche.
Mit Call hatte ich es anfänglich versucht, aber das was es eigentlich bewirken sollte funktionierte nicht.
Die Routine lief erst weiter wenn ich das aufgerufene Programm beendet hatte.

Jetzt habe ich schon einige Hardcore Tests hinter mir und es läuft ganz gut :)

Ich hätte sowieso nicht gedacht, dass ich mich nochmal mit DOS befassen muss ;)

Danke!