| 

.NET C# Java Javascript Exception

6
Hallo,


ich habe da ein Problem was Sprungmarken (goto) in batch betrifft, und zwar möchte ich das
wenn der befehl
goto ProgrammAusführenNotepad

ausgeführt wird zur Sprungmarke
:ProgrammAusführenNotepad

geht stattdessen bleibt er bei ProgrammAusführenCalc hängen und führt calc.exe aus

....
if /i "%wieHelfen%"=="ich muss was schreiben" goto ProgrammAusführenNotepad
....
....
:ProgrammAusführenCalc
calc.exe
exit

:ProgrammAusführenNotepad
notepad.exe
exit


wenn ich die Sprungmarke mit :ProgrammAusführenCalc austausche, so das Notepad.exe als erstes ausgeführt wird, wird wiederum Calc nicht ausgeführt.


kann mir jemand helfen ?

danke
25.09.2011
vicon 308 1 8
habe aufgrund deiner frage was neues gelernt. deshalb +1
nabuchodonossor 26.09.2011
3 Antworten
14
Also Windows 7 scheint mit längeren Labeln klar zu kommen - hier gibt es wohl mehr signifikante Stellen.
echo off
echo Dies ist ein Test
goto labellaengemehrals8Zeichen1
:undweiter
:labellaengemehrals8Zeichen2
echo zweites Label
goto ende
:labellaengemehrals8Zeichen1
echo erstes Label
goto undweiter
:ende

Hermit erscheint bei mir unter Windows 7 die erwartete Ausgabe:
Dies ist ein Test
erstes Label
zweites Label

Erst als ich Label mit Namen mit weit mehr als 150 identischen Zeichen verwendet habe funktionierte es nicht mehr.
25.09.2011
Joachim 3,1k 4 9
+1 Interessant. Hab versucht, dafür eine "offizielle" Bestätigung zu finden (und ob sich das mit W7 oder Vista geändert hat), aber nichts gefunden. Bis mindestens Windows XP galt die 8-Zeichen-Regel noch: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/goto.mspx?mfr=true
Nun müßte uns vicon mal verraten, welches OS er nutzt...
Matthias Hlawatsch 26.09.2011
also ich benutze Windows 7 64 bit
vicon 26.09.2011
Dann teste doch mal Joachims kleines Skript in dieser Antwort und sag uns, was herauskommt.
Matthias Hlawatsch 26.09.2011
3
Also bei meinem XP System funktioniert es auch mit weit mehr als 8 Identischen zeichen...
vllt isses ja hardwareaghänig
DerPunk 16.12.2011
6
Was willst du denn erreichen? Möchtest du nur einmal eine Eingabe machen oder soll das Batchfile öfters fragen und mehrere Eingaben ermöglichen? Vielleicht sowas:

@echo off
:fragemich
set /p wie.helfen="Wie kann ich dir helfen ? "
if /i "%wie.helfen%"=="rechnen" goto Programm.ausführen.calc
if /i "%wie.helfen%"=="schreiben" goto Programm.ausführen.notepad
if /i "%wie.helfen%"=="fertig" goto Fertig
echo Das hab ich nicht verstanden
goto fragemich
:Programm.ausführen.notepad
notepad.exe
goto fragemich
:Programm.ausführen.calc
calc.exe
goto fragemich
:Fertig
exit
25.09.2011
Joachim 3,1k 4 9
wenn ich kürzere labelnamen verwende, geht das bei mir (vista). mit den langen gehts nicht.
nabuchodonossor 26.09.2011
warum funktionieren nicht lange labelnamen ?, wenn ich die Punkte gesetzt habe zb. Programm.ausführen.calc , es sollte etwas Ähnlichkeit wie Java-klassen haben, denn es würden weitere klassen kommen. gibt es denn eine möglichkeit das man lange labelnamen nutzen kann ?
vicon 26.09.2011
8
Kannst Du doch auf Win7 64. Gehe doch bitte erst einmal auf die Rückfragen ein, die man Dir jetzt in 2 Threads zu hauf gestellt hat, z.B. ob bei Dir vielleicht fehler im "unterschlagenen" Code sind da es bei anderen mit dem OS funktioniert hat. Oder ob der Code weiter oben in diesem Thread bei Dir funktioniert.
Jens Duczmal 26.09.2011
6
Die Namen der Sprungmarken dürfen zwar beliebig lang sein, aber nur die ersten 8 Zeichen sind signifikant. D.h. für cmd sind die beiden Sprungmarken nicht zu unterscheiden. Siehe z.B. in diesem Wikibook.
25.09.2011
Matthias Hlawatsch 13,2k 4 9

Stelle deine Batch-Frage jetzt!