Pech mit GOTO-Befehl, wenn die Sprungmarke in der Batch-Datei nicht gefunden werden kann.
Hallo!
Diesmal habe ich ein seltsames Problem:
Eine Batch-Datei wird auf unterschiedlichen PCs ausgeführt. In der Batch-Datei steht:
Wenn der Name des jeweiligen PCs in der Batch-Datei noch nicht als Sprungmarke eingetragen worden ist, dann bricht goto :%COMPUTERNAME% den ganzen Batch ab.
Nun ist die Frage: Wie kann ich eine IF-Abfrage oder ähnliches einbauen, die dann bei einem Fehler auf die Sprungmarke :M5 umleitet.
Danke schön.
evinben
Diesmal habe ich ein seltsames Problem:
Eine Batch-Datei wird auf unterschiedlichen PCs ausgeführt. In der Batch-Datei steht:
goto :%COMPUTERNAME%
:PC1
call ….
:PC2
call ….
:PC3
call ….
pause
goto :eof
:M5
:Meldung ausgeben
echo Dieser Computer ist noch nicht in der Datenbank.
Wenn der Name des jeweiligen PCs in der Batch-Datei noch nicht als Sprungmarke eingetragen worden ist, dann bricht goto :%COMPUTERNAME% den ganzen Batch ab.
Nun ist die Frage: Wie kann ich eine IF-Abfrage oder ähnliches einbauen, die dann bei einem Fehler auf die Sprungmarke :M5 umleitet.
Danke schön.
evinben
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184673
Url: https://administrator.de/forum/pech-mit-goto-befehl-wenn-die-sprungmarke-in-der-batch-datei-nicht-gefunden-werden-kann-184673.html
Ausgedruckt am: 25.07.2025 um 17:07 Uhr
17 Kommentare
Neuester Kommentar
Hallo evinben!

... allerdings: Wenn ja bei Dir "
Grüße
bastla
glaubst du mir wohl nicht ;)?
Naja, im Hinblick darauf, dass ich erfolgreich unter W7Pro getestet hatte (und eben mit Deinem geposteten Schnipsel zur Sicherheit auch noch unter W7Enterprise - funktioniert auch da), fällt mir das zugegebener Maßen etwas schwer ... ... allerdings: Wenn ja bei Dir "
findstr
" einen Treffer liefert, kann eigentlich nur der Computer, an dem Du testest, "M5" heißen (was natürlich dazu führen würde, dass eben kein Sprung erfolgt) - daher einfach einmal als Sprungmarke ":nichtgefunden
" verwenden ...Grüße
bastla

Moin maeddelzz und bastla.."
Ich kenn ja fast alles, aber eine zeile

Goto mit doppelpunkt?
AnWay,mwas ist denn eigentlich das ziel in einem script allen computernamen einzelne unterpunkte zu geben?
Das (was das machen soll) geht doch sicherlich eleganter, obwohl eine problembatch mit fuehrendem €cho off ist ja auch mal was anderes
Gruss
Ich kenn ja fast alles, aber eine zeile
03. findstr /ib ":%COMPUTERNAME%" "%~f0"||goto :M5
Ist ja schon etwas Goto mit doppelpunkt?
AnWay,mwas ist denn eigentlich das ziel in einem script allen computernamen einzelne unterpunkte zu geben?
Das (was das machen soll) geht doch sicherlich eleganter, obwohl eine problembatch mit fuehrendem €cho off ist ja auch mal was anderes
Gruss
Hallo evinben!
Bliebe aber noch T-Mos berechtigte Frage: Sind tatsächlich für die einzelnen Rechner derart unterschiedliche Vorgangsweisen nötig, dass eigene Programmteile erstellt werden müssen?
@t-mo
Der ":" ist kein Problem (weil er bei einem "
Grüße
bastla
Bliebe aber noch T-Mos berechtigte Frage: Sind tatsächlich für die einzelnen Rechner derart unterschiedliche Vorgangsweisen nötig, dass eigene Programmteile erstellt werden müssen?
@t-mo
Der ":" ist kein Problem (weil er bei einem "
call
" ja tatsächlich gebraucht wird, schreibe ich "goto
" eigentlich schon sehr lange auch gleich so) ...Grüße
bastla

Salue bastla,
Naja.... "du"
Du weisst aber auch, das du bei einem unterprogramm immer mit nem doppelpunkt callgirlen musst, willst du ein anderes script anbaetscheln, dann nimmst du doch auch keine doppelnippel
Ok goto wuerde niemals nie nicht eine andere instanz mit einem anderen script starten, ausser ..... ( aber dann wuerds nur der befehl machen, der unter dem go getut wird, niemals das goto selber.
Duck und wech...
Gruesse
Naja.... "du"
Du weisst aber auch, das du bei einem unterprogramm immer mit nem doppelpunkt callgirlen musst, willst du ein anderes script anbaetscheln, dann nimmst du doch auch keine doppelnippel
Ok goto wuerde niemals nie nicht eine andere instanz mit einem anderen script starten, ausser ..... ( aber dann wuerds nur der befehl machen, der unter dem go getut wird, niemals das goto selber.
Duck und wech...
Gruesse
Hallo,
an sich kann man natürlich die Datei durchsuchen, ob die Sprungmarke vorhanden ist, man kann aber auch einfach bei einem Fehler des goto's direkt den Fehlertext ausgeben.
Wobei das goto :eof, eher der Optik dient, als der Funktion, da es keine hat.
Denn wenn ein Sprungfehler auftritt wird der Batchfile-Kontext verlassen und nur noch der Teil in den Klammern ausgeführt.
Da man sich aber schon im cmd-line Kontext befindet, hat goto keine Funktion mehr und call :label führt zu einem Fehler.
Gruß
jeb
an sich kann man natürlich die Datei durchsuchen, ob die Sprungmarke vorhanden ist, man kann aber auch einfach bei einem Fehler des goto's direkt den Fehlertext ausgeben.
goto :%computername% 2>nul || (
echo Dieser Computer "%computername%" ist noch nicht in der Datenbank.
goto :eof
)
:PC1
...
:PC2
....
Wobei das goto :eof, eher der Optik dient, als der Funktion, da es keine hat.
Denn wenn ein Sprungfehler auftritt wird der Batchfile-Kontext verlassen und nur noch der Teil in den Klammern ausgeführt.
Da man sich aber schon im cmd-line Kontext befindet, hat goto keine Funktion mehr und call :label führt zu einem Fehler.
Gruß
jeb
Hallo evinben!
Meine Überlegung ging eher in die Richtung, dass doch vermutlich für die verschiedenen Rechner ähnliche bis gleiche Arbeitsschritte (nur eben mit unterschiedlichen Daten) anfallen würden - dann sollte es genügen, diese Daten (in welcher Form auch immer, und wenn es eine simple CSV-Datei ist) zentral bereitszustellen und bei Bedarf abzurufen ...
Grüße
bastla
Meine Überlegung ging eher in die Richtung, dass doch vermutlich für die verschiedenen Rechner ähnliche bis gleiche Arbeitsschritte (nur eben mit unterschiedlichen Daten) anfallen würden - dann sollte es genügen, diese Daten (in welcher Form auch immer, und wenn es eine simple CSV-Datei ist) zentral bereitszustellen und bei Bedarf abzurufen ...
Grüße
bastla