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

1 Programm starten. Auf Ende warten. Danach 2 Programm starten. Auf Ende warten. Was mache ich falsch?

Frage Entwicklung Batch & Shell

Mitglied: takitano

takitano (Level 1) - Jetzt verbinden

03.07.2012, aktualisiert 21:06 Uhr, 5244 Aufrufe, 13 Kommentare

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?

01.
@ECHO OFF 
02.
echo Das Programm wurde gestartet. 
03.
ECHO Programm "1" starten? (j / n) 
04.
: Marker1 
05.
SET /p wahl= 
06.
if /i not '%wahl%' == 'n' (if /i '%wahl%' == 'j' (goto Ja ) ) else goto Nein  
07.
if defined wahl ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker1 
08.
:Nein 
09.
echo Das Programm "1" wurde nicht gestartet. 
10.
goto Ende 
11.
:Ja 
12.
echo Das Programm "1" wird gestartet. 
13.
start /wait Files\1 
14.
echo Das Programm "1" wurde beendet. 
15.
goto Ende 
16.
:Ende 
17.
echo Das Programm "2" starten? (j / n) 
18.
: Marker2 
19.
set /p wahl1= 
20.
if /i not '%wahl1%' == 'n' (if /i '%wahl1%' == 'j' (goto Ja ) ) else goto Nein  
21.
if defined wahl1 ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker2 
22.
:Nein 
23.
echo Das Programm "2" wurde nicht gestartet.. 
24.
goto Ende 
25.
:Ja 
26.
echo Das Programm "2" wird gestartet. 
27.
start /wait Files\2 
28.
goto Ende 
29.
:Ende 
30.
pause
Mitglied: bastla
03.07.2012 um 17:43 Uhr
Hallo takitano!

Soferne es sich bei "Programm 1" um einen Batch handelt, könntest Du es mit
call Files\1
versuchen, und wenn es tatsächlich eine ".exe"-Datei sein sollte, einfach mit
Files\1
Grüße
bastla
Bitte warten ..
Mitglied: NetWolf
03.07.2012 um 19:52 Uhr
Moin Moin,

du hast 2 x NEIN und 2 x Ende als Sprungmarke in deinem Script, ist das so gewollt?

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: takitano
03.07.2012, aktualisiert um 21:00 Uhr
Das ist eher eine batch-Datei, die in eine exe-Datei konvertiert wurde. Nach Programmende bleibt der Fenster geöffnet bis man auf "Enter" oder auf "X" klickt. Ich kann es nicht ändern, da das Programm nicht von mir ist.

1) call kennt "/wait" nicht. Deswegen passt es nicht ganz - Script wartet bis das erste Programm fertig ist und nur wenn das Programmfenster geschlossen wird läuft er weiter.
2) Wenn ich "/wait" nicht einsetze, kommt alles durcheinander. Oder verstehe ich was falsch?
Bitte warten ..
Mitglied: takitano
03.07.2012 um 21:08 Uhr
Zitat von NetWolf:
Moin Moin,

du hast 2 x NEIN und 2 x Ende als Sprungmarke in deinem Script, ist das so gewollt?

Grüße aus Rostock
Wolfgang
(Netwolf)

Ja. Da gibt's noch weitere Zeilen... Ich habe Quelltext ein bisschen aktualisiert, zwar nicht ganz alls, dennoch funktioniert es (abgesehen von fehlenden Programmen)
Bitte warten ..
Mitglied: Pjordorf
03.07.2012 um 21:37 Uhr
Hallo,

Zitat von takitano:
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.
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! 
dennoch funktioniert es
Weshalb du ja auch ein "Batchdatei abbrechen? (j/n)" unerklärlicherweise immer bekommst

Gruß,
Peter
Bitte warten ..
Mitglied: bastla
03.07.2012 um 21:48 Uhr
Hallo takitano!
Wenn ich "/wait" nicht einsetze, kommt alles durcheinander. Oder verstehe ich was falsch?
Lass mich das mit einer Frage beantworten: Was hat denn Dein diesbezüglicher Test ergeben?

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
03.07.2012 um 21:49 Uhr
moin takitano,

Versuch es So:
01.
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:
01.
: Marker1 
02.
SET /p wahl= 
03.
if /i '%wahl%' == 'j' goto :Ja 
04.
if /i not '%wahl%' == 'n' ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker1 
05.
:Nein 
06.
 rem Hier Nein 
07.
::..... 
08.
:Ja 
09.
 rem hier ja 
10.
:.....
Gruß Phil
Bitte warten ..
Mitglied: bastla
03.07.2012, aktualisiert um 21:58 Uhr
... oder so:
01.
@ECHO OFF & setlocal 
02.
echo Das Programm wurde gestartet. 
03.
:Marker1 
04.
SET /p wahl=Programm "1" starten? (j / n) 
05.
if /i '%wahl%'=='n' (echo Das Programm "1" wurde nicht gestartet. & goto Marker2) 
06.
if /i '%wahl%' neq 'j' (ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker1) 
07.
echo Das Programm "1" wird gestartet. 
08.
Files\1 
09.
echo Das Programm "1" wurde beendet. 
10.
 
11.
:Marker2 
12.
set "wahl=" 
13.
set /p wahl=Das Programm "2" starten? (j / n) 
14.
if /i '%wahl%'=='n' (echo Das Programm "2" wurde nicht gestartet. & goto Ende) 
15.
if /i '%wahl%' neq'j' (ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto Marker2) 
16.
echo Das Programm "1" wird gestartet. 
17.
Files\2 
18.
:Ende 
19.
pause
Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
03.07.2012 um 22:07 Uhr
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.

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.
01.
setlocal 
02.
set "prompt=$g" 
03.
echo 0 
04.
goto :Next 
05.
echo 0,1 
06.
:Next 
07.
echo 1 
08.
goto :Next 
09.
echo 1,1 
10.
:Next 
11.
echo 2 
12.
goto :Next 
13.
echo 2,2 
14.
: Next 
15.
echo 3 
16.
pause
Gruß Phil
Bitte warten ..
Mitglied: Pjordorf
03.07.2012 um 22:29 Uhr
Hallo Phil,

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)

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
Bitte warten ..
Mitglied: Penny.Cilin
04.07.2012 um 09:01 Uhr
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.
Bitte warten ..
Mitglied: takitano
04.07.2012 um 10:26 Uhr
Zitat von bastla:
... oder so:
01.
@ECHO OFF & setlocal 
02.
> echo Das Programm wurde gestartet. 
03.
> :Marker1 
04.
> SET /p wahl=Programm "1" starten? (j / n) 
05.
> if /i '%wahl%'=='n' (echo Das Programm "1" wurde nicht gestartet. & goto Marker2) 
06.
> if /i '%wahl%' neq 'j' (ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto 
07.
> Marker1) 
08.
> echo Das Programm "1" wird gestartet. 
09.
> Files\1 
10.
> echo Das Programm "1" wurde beendet. 
11.
>  
12.
> :Marker2 
13.
> set "wahl=" 
14.
> set /p wahl=Das Programm "2" starten? (j / n) 
15.
> if /i '%wahl%'=='n' (echo Das Programm "2" wurde nicht gestartet. & goto Ende) 
16.
> if /i '%wahl%' neq'j' (ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto 
17.
> Marker2) 
18.
> echo Das Programm "1" wird gestartet. 
19.
> Files\2 
20.
> :Ende 
21.
> pause 
22.
> 
Grüße
bastla

Geht nicht. Das Programm 1 wird immer in einem neuen CMD-Fenster gestartet. Wenn Benutzer es gleich danach durch den Klick auf "Fenster-Schließen (X oben rechts)" abbricht, kommt im ersten Fenster (wo Batch-Script läuft) immer noch dasselbe Meldung : Batchvorgang abbrechen (J/N)?
Bitte warten ..
Mitglied: takitano
04.07.2012, aktualisiert um 11:17 Uhr
Zitat von pieh-ejdsch:
moin takitano,

Versuch es So:
01.
> start "Programm 1" /wait cmd /k "Files\1 && (echo Programm Fertig &pause &exit /b 0) || (Programm 
02.
> Fehler &pause &exit /b 1)" 
03.
> 
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:
01.
> : Marker1 
02.
> SET /p wahl= 
03.
> if /i '%wahl%' == 'j' goto :Ja 
04.
> if /i not '%wahl%' == 'n' ECHO Benutzen Sie bitte "j/J"-Ja oder "n/N"- Nein. & goto 
05.
> Marker1 
06.
> :Nein 
07.
>  rem Hier Nein 
08.
> ::..... 
09.
> :Ja 
10.
>  rem hier ja 
11.
> :..... 
12.
> 
Gruß Phil

Danke, Phil! Es hat funktioniert!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows 10
Durch einschalten des xbox one controller ein programm starten (3)

Frage von xsoerenx zum Thema Windows 10 ...

Sicherheitsgrundlagen
Programm ohne UAC und Administratorrechte starten (3)

Anleitung von agowa338 zum Thema Sicherheitsgrundlagen ...

Monitoring
Mailsend.exe und TheDude - was mache ich falsch? (1)

Frage von Yannosch zum Thema Monitoring ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...