93578
03.07.2012, aktualisiert um 21:06:32 Uhr
8284
13
0
1 Programm starten. Auf Ende warten. Danach 2 Programm starten. Auf Ende warten. Was mache ich falsch?
Hallo an alle!
Warum kommt immer nach dem Beenden des Programms 1 immer die Meldung "Batchdatei abbrechen? (j/n)".?
Das 1 Programm startet auch in einem CMD-Fenster und ich schließe dieses Fenster mit einem "Enter" - alles läuft wie es sein soll - d.h. es wird nach dem Start von Programm 2 gefragt.
Klicke ich aber auf Standard-Icon "X" ("Schließen") oben rechts, bekomme ich immer die oben genannte Meldung. Wie kann ich trotz vorzeitiger Beendigung des 1 Programms durch Klick auf "X", das Programm "2" ohne vorherigen Ctrl+C-Meldung starten?
Warum kommt immer nach dem Beenden des Programms 1 immer die Meldung "Batchdatei abbrechen? (j/n)".?
Das 1 Programm startet auch in einem CMD-Fenster und ich schließe dieses Fenster mit einem "Enter" - alles läuft wie es sein soll - d.h. es wird nach dem Start von Programm 2 gefragt.
Klicke ich aber auf Standard-Icon "X" ("Schließen") oben rechts, bekomme ich immer die oben genannte Meldung. Wie kann ich trotz vorzeitiger Beendigung des 1 Programms durch Klick auf "X", das Programm "2" ohne vorherigen Ctrl+C-Meldung starten?
@ECHO OFF
echo Das Programm wurde gestartet.
ECHO Programm "1" starten? (j / n)
: Marker1
SET /p wahl=
if /i not '%wahl%' == 'n' (if /i '%wahl%' == 'j' (goto Ja ) ) else goto Nein
if defined wahl ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker1
:Nein
echo Das Programm "1" wurde nicht gestartet.
goto Ende
:Ja
echo Das Programm "1" wird gestartet.
start /wait Files\1
echo Das Programm "1" wurde beendet.
goto Ende
:Ende
echo Das Programm "2" starten? (j / n)
: Marker2
set /p wahl1=
if /i not '%wahl1%' == 'n' (if /i '%wahl1%' == 'j' (goto Ja ) ) else goto Nein
if defined wahl1 ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker2
:Nein
echo Das Programm "2" wurde nicht gestartet..
goto Ende
:Ja
echo Das Programm "2" wird gestartet.
start /wait Files\2
goto Ende
:Ende
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 187426
Url: https://administrator.de/contentid/187426
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo,
Inwiefern noch für XP/Vista/Win7 zutreffend kann ich ohne testen nich sagen.
Gruß,
Peter
Zitat von @93578:
Ja. Da gibt's noch weitere Zeilen...
Dir ist aber schon klar das eine Sprungmarke Eindeutig sein muß (Soll?) damit auch die von dir gewünschte Sprungmarke angesprochen wird? Du hast in deinem uns geposteten Code in Zeilen 8 und 22 jeweils als Sprungmarke ":Nein" stehen. In Zeilen 11 und 25 jeweils ein ":Ja" stehen. In Zeilen 16 und 29 jeweils ein ":Ende". Auch die Zeilen 4 und 18 mit ": Marker1" bzw. ": Marker2" sind wegen des Leerzeichens nach dem Doppelpunkt nicht mehr eindeutig. Eine Sprungmarke hört am ersten Leerzeichen auf. Hier also nur ":". Ob dies allerdings auch so im Batch gewertet wird kann ich jetzt ohne testen nicht sagen. Weiterhin wird eine Sprungmarke immer vom Anfang der Datei gesucht und beim ersten zutreffen angewendet. Weshalb deine jeweils 2.ten ":Ja", ":Nein", ":Ende" nie erreicht werden.Ja. Da gibt's noch weitere Zeilen...
Eine Sprungmarke darf beliebig lang sein, aber DOS ignoriert
alles, was ueber 8 Stellen hinausgeht !! Falls mehrere Marken
vorkommen, die (in den ersten 8 Stellen) gleich sind, wird immer
nur die erste gefunden.
Wenn Sonderzeichen verwendet werden, bitte nur solche, die auch
in Dateinamen gueltig sind (ausser "%"). Andere Sonderzeichen sind
Trennzeichen. Vorsicht: Ein "?" ist z.B. gueltig, aber ein "*"
ist absolut unbrauchbar. Am besten: keine dubiosen Sonderzeichen
verwenden!
Nach dem Leerzeichen oder Trennzeichen wird der Rest der Zeile
ignoriert. Dies sollte zur Kommentierung genutzt werden!
dennoch funktioniert es
Weshalb du ja auch ein "Batchdatei abbrechen? (j/n)" unerklärlicherweise immer bekommstGruß,
Peter
moin takitano,
Versuch es So:
die Auswahl würde ich vereinfachen erst Die Positive Abfrage auf ja und dann negativ auf nein.
Ist nicht so verworren geschrieben und schön kurz:
Gruß Phil
Versuch es So:
start "Programm 1" /wait cmd /k "Files\1 && (echo Programm Fertig &pause &exit /b 0) || (Programm Fehler &pause &exit /b 1)"
die Auswahl würde ich vereinfachen erst Die Positive Abfrage auf ja und dann negativ auf nein.
Ist nicht so verworren geschrieben und schön kurz:
: Marker1
SET /p wahl=
if /i '%wahl%' == 'j' goto :Ja
if /i not '%wahl%' == 'n' ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker1
:Nein
rem Hier Nein
::.....
:Ja
rem hier ja
:.....
Gruß Phil
... oder so:
Grüße
bastla
@ECHO OFF & setlocal
echo Das Programm wurde gestartet.
:Marker1
SET /p wahl=Programm "1" starten? (j / n)
if /i '%wahl%'=='n' (echo Das Programm "1" wurde nicht gestartet. & goto Marker2)
if /i '%wahl%' neq 'j' (ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker1)
echo Das Programm "1" wird gestartet.
Files\1
echo Das Programm "1" wurde beendet.
:Marker2
set "wahl="
set /p wahl=Das Programm "2" starten? (j / n)
if /i '%wahl%'=='n' (echo Das Programm "2" wurde nicht gestartet. & goto Ende)
if /i '%wahl%' neq'j' (ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker2)
echo Das Programm "1" wird gestartet.
Files\2
:Ende
pause
bastla
Zitat von @Pjordorf:
... ": Marker1" bzw. ": Marker2" sind wegen des Leerzeichens nach dem Doppelpunkt nicht mehr eindeutig. Eine Sprungmarke hört am ersten Leerzeichen auf. Hier also nur ":". Ob dies allerdings auch so im Batch gewertet wird kann ich jetzt ohne testen nicht sagen. Weiterhin wird eine Sprungmarke immer vom Anfang der Datei gesucht und beim ersten zutreffen angewendet. Weshalb deine jeweils 2.ten ":Ja", ":Nein", ":Ende" nie erreicht werden.
... ": Marker1" bzw. ": Marker2" sind wegen des Leerzeichens nach dem Doppelpunkt nicht mehr eindeutig. Eine Sprungmarke hört am ersten Leerzeichen auf. Hier also nur ":". Ob dies allerdings auch so im Batch gewertet wird kann ich jetzt ohne testen nicht sagen. Weiterhin wird eine Sprungmarke immer vom Anfang der Datei gesucht und beim ersten zutreffen angewendet. Weshalb deine jeweils 2.ten ":Ja", ":Nein", ":Ende" nie erreicht werden.
Sprungmarken werden immer erst in den Folgenden Zeilen gesucht und erst danach gehts von Vorn los.
Das mit dem Doppelpunkt und dem Leerzeichen vor der Marke ist zwar nicht ganz Batch-konform ... aber Vernachlässigbar.
setlocal
set "prompt=$g"
echo 0
goto :Next
echo 0,1
:Next
echo 1
goto :Next
echo 1,1
:Next
echo 2
goto :Next
echo 2,2
: Next
echo 3
pause
Gruß Phil
Hallo Phil,
Wer noch mit wie ich PC DOS 2.0 (1983) angefangen hat nachdem der C64 nicht mehr reichte, weiß noch was "eindeutig" bei Sprungmarken bedeutet und das ein Leerzeichen ein Trennzeichen darstellt
Danke und Gruß,
Peter
Zitat von @pieh-ejdsch:
Sprungmarken werden immer erst in den Folgenden Zeilen gesucht und erst danach gehts von Vorn los.
OK. War mir nicht sicher weshalb ich es auch nie ausgetestet / verwendet habe (Sprungmarken immer eindeutig gehalten)Sprungmarken werden immer erst in den Folgenden Zeilen gesucht und erst danach gehts von Vorn los.
Das mit dem Doppelpunkt und dem Leerzeichen vor der Marke ist zwar nicht ganz Batch-konform ... aber Vernachlässigbar.
OK. Das hätte ich sonst wirklich mal testen müssen.Wer noch mit wie ich PC DOS 2.0 (1983) angefangen hat nachdem der C64 nicht mehr reichte, weiß noch was "eindeutig" bei Sprungmarken bedeutet und das ein Leerzeichen ein Trennzeichen darstellt
Danke und Gruß,
Peter
Zitat von @Pjordorf:
> Eine Sprungmarke darf beliebig lang sein, aber DOS ignoriert
> alles, was ueber 8 Stellen hinausgeht !! Falls mehrere Marken
> vorkommen, die (in den ersten 8 Stellen) gleich sind, wird immer
> nur die erste gefunden.
>
Inwiefern noch für XP/Vista/Win7 zutreffend kann ich ohne testen nich sagen.
> Wenn Sonderzeichen verwendet werden, bitte nur solche, die auch
> in Dateinamen gueltig sind (ausser "%"). Andere Sonderzeichen sind
> Trennzeichen. Vorsicht: Ein "?" ist z.B. gueltig, aber ein "*"
> ist absolut unbrauchbar. Am besten: keine dubiosen Sonderzeichen
> verwenden!
> Nach dem Leerzeichen oder Trennzeichen wird der Rest der Zeile
> ignoriert. Dies sollte zur Kommentierung genutzt werden!
>
Soweit ich weiß ist diese Restriktion in der Commandlineshell seit Windows XP nicht mehr soo relevant. ich verwende in Batches auch schonmal Sprungmarken mit mehr als 8 Zeichen.