y4nn1ck
Goto Top

"goto" kann syntaktisch an dieser Stelle nicht verarbeitet werden

Morgen, ich schreibe gerade an einem Zufallsgenerator für die Klasse, also an einem, der auswählt, wer dran kommt. Ich schreibe es in batch. Es funktioniert auch alles, allerdings habe ich gerade die Funktion hinzugefügt, dass man auswählen kann, wer am derzeitigen Tag nicht da ist. Wenn man dann den Namen auswählt (also jeder hat seine eigene Taste), dann soll er zu dem Zufallsgenerator (alles im selben programm), bei dem derjenige nicht dabei ist. Zb. if %klick%==A goto Frank . Leider nennt er mir, wenn ich das Programm ausführe, den oben genannten "Fehler".
weiß jemand was da nicht stimmt? Wäre wirklich nett...

Content-Key: 273695

Url: https://administrator.de/contentid/273695

Printed on: April 20, 2024 at 03:04 o'clock

Member: Biber
Biber Jun 03, 2015 updated at 12:12:13 (UTC)
Goto Top
Moin Y4nn1ck,

bitte poste mal ein paar Zeilen mehr deines Skriptes (vorzugsweise in Codetags).

Das können mehrere Fehler in der Zeile if %klick%==A goto Frank untergebracht worden sein, zB

- %klick% ist undefined
- %klick% und A stehen beide nicht in Anführungszeichen; somit kann aus diversen Gründen/in diversen Situationen Syntaxfehler "geworfen werden".
- Der Schalter /i beim IF fehlt - Klein/Grossschreibung wird NICHT ignoriert
- Sprungmarke "Frank" existiert nicht
...

Grüße
Biber
Member: Penny.Cilin
Penny.Cilin Jun 03, 2015 at 12:19:35 (UTC)
Goto Top
Ohne Begrüssung.

Lass uns doch mal Deinen Batch sehen, oder ist dieser Batch geheim?
Ist das Sprungziel denn korrekt definiert?
Member: Y4nn1ck
Y4nn1ck Jun 03, 2015 at 12:24:36 (UTC)
Goto Top
%klick% ist definiert
Keins der beiden variablen ist in Anführungszeichen
/i ist vorhanden
Sprungmarke existiert
Member: Y4nn1ck
Y4nn1ck Jun 03, 2015 at 12:25:20 (UTC)
Goto Top
Wie kann ich den komplett hierein stellen?
Member: Penny.Cilin
Penny.Cilin Jun 03, 2015 at 13:04:38 (UTC)
Goto Top
So einfach, wie Du einen Beitrag erstellst. Copy und paste des Quelltextes.

Und danach bitte unbedingt Codetags benutzen, damit man das ganze auch vernünftig lesen kann.
Member: Y4nn1ck
Y4nn1ck Jun 03, 2015 updated at 14:04:23 (UTC)
Goto Top
@echo off
title Zufallsgenerator 9d                              Version 2.0.1
color 3F

echo Lasst uns das Rad drehen, doch vorher erstmal den Kranken auswaehlen
echo.
echo.
echo A fuer Frank    B fuer Sophie    C fuer Mareike    D fuer Tillmann    
echo E fuer Markus   F fuer Luise     G fuer Sophia     H fuer Dora       
echo I fuer Ferdi    J fuer Anton     K fuer Mathilda   L fuer Julia     
echo M fuer Anna     N fuer Harry     O fuer Jakob      P fuer Jan      
echo Q fuer Julius   R fuer Yannick   S fuer Mizgin     T fuer Emily    
echo U fuer Niemand
echo.
echo Unser Pechvogel fuer heute ist

:zuhause

pause>Nul

set /a %klick%
if /i %klick%==A goto afrank
if /i %klick%==B goto bsophie
if /i %klick%==C goto cmareike
if /i %klick%==D goto dtillmann
if /i %klick%==E goto emarkus
if /i %klick%==F goto fluise
if /i %klick%==G goto gsophia
if /i %klick%==H goto hdora
if /i %klick%==I goto iferdi
if /i %klick%==J goto janton
if /i %klick%==K goto kmathilda
if /i %klick%==L goto ljulia
if /i %klick%==M goto manna
if /i %klick%==N goto nharry
if /i %klick%==O goto ojakob
if /i %klick%==P goto pjan
if /i %klick%==Q goto qjulius
if /i %klick%==R goto ryannick
if /i %klick%==S goto smizgin
if /i %klick%==T goto temily
if /i %klick%==U goto ualle



:afrank
pause>Nul
weiter habe ich keine Probeme
und codetag läuft meines wissens nach noch nicht mit batch

[Edit Biber] Okay, okay.... jetzt hab ich die albernen Codetags gesetzt.
Und zu diesem Satz...
weiter habe ich keine Probeme
möchte ich jetzt nix schreiben.[/Edit]
Member: Penny.Cilin
Solution Penny.Cilin Jun 03, 2015 updated at 14:17:07 (UTC)
Goto Top
Du sollst ja auch in Deinem Beitrag hier die Codetags nutzen und nicht im Batch.
Member: SarekHL
Solution SarekHL Jun 03, 2015 updated at 14:16:14 (UTC)
Goto Top
Also, so geht es:

echo off
title Zufallsgenerator 9d Version 2.0.1
color 3F

echo Lasst uns das Rad drehen, doch vorher erstmal den Kranken auswaehlen
echo.
echo.
echo A fuer Frank B fuer Sophie C fuer Mareike D fuer Tillmann
echo E fuer Markus F fuer Luise G fuer Sophia H fuer Dora
echo I fuer Ferdi J fuer Anton K fuer Mathilda L fuer Julia
echo M fuer Anna N fuer Harry O fuer Jakob P fuer Jan
echo Q fuer Julius R fuer Yannick S fuer Mizgin T fuer Emily
echo U fuer Niemand
echo.
set /p klick = Unser Pechvogel für heute ist 


:zuhause


if /i "%klick%"=="A" goto afrank  
...


:afrank
pause>Nul


Was ich verändert habe:

- Zuweisung der Eingabe zur Variable (Zeile 15)
- Anführungszeichen in der If-Abfrage gesetzt (am Beispiel von Zeile 21)
Member: Biber
Solution Biber Jun 03, 2015 updated at 14:16:42 (UTC)
Goto Top
[OT]
Moin SarekHL,

Musst du nicht diese Zeile auch ändern?
Zufallsgenerator 9d Version 2.0.1

Eigentlich sollte doch der Versionszähler wenigstens auf Zufallsgenerator 9d Version 2.0.1a.

Grüße
Biber
[/OT]
Member: SarekHL
Solution SarekHL Jun 03, 2015 updated at 14:17:00 (UTC)
Goto Top
Zitat von @Biber:

Eigentlich sollte doch der Versionszähler wenigstens auf Zufallsgenerator 9d Version 2.0.1a.

face-big-smile


Übrigens, so viel wie wir hier in letzter Zeit mit Batch zu tun haben (mehr als mit VBS oder so), wäre es wirklich mal praktisch, eine Syntaxhervorhebung für Batch in den Codetags zu haben ...
Member: SarekHL
Solution SarekHL Jun 04, 2015 updated at 11:30:20 (UTC)
Goto Top
Zitat von @Y4nn1ck:

Wenn man dann den Namen auswählt (also jeder hat seine eigene Taste), dann soll er zu dem Zufallsgenerator (alles im selben programm), bei dem derjenige nicht dabei ist.

Wo ich mir das gerade noch mal durchlese finde ich den Weg etwas schräg, um das Ziel zu erreichen. Du arbeitest dann mit zwanzig Zufallsgenerator-Codes, bei denen das meiste redundant ist. Wäre es nicht eleganter das Programm so aufzuziehen:

  1. Eingabe (oder Auswahl) des eigenen Namens
  2. Zufallsgenerator starten und Ergebnis in Variable schreiben
  3. Prüfen, ob das Ergebnis des Zufallsgenerator zufällig der eigene Name ist, wenn ja, zurück zu Schritt 2
  4. Ausgabe des Ergebnisses
Member: Y4nn1ck
Y4nn1ck Jun 04, 2015 at 11:31:05 (UTC)
Goto Top
Ist eleganter, hast recht...
auch eine idee wie man das dann mit mehreren kranken personen schreiben kann?
Member: SarekHL
SarekHL Jun 04, 2015 at 11:39:57 (UTC)
Goto Top
Zitat von @Y4nn1ck:

auch eine idee wie man das dann mit mehreren kranken personen schreiben kann?

Sorry, dafür reichen dann meine Batch-Kenntnisse nicht aus. Ich programmiere normalerweise in VB6, dort würde ich das mit einer Array-Variable lösen, die dann ebenfalls mit dem Ergebnis des Zufallsgenerators verglichen würde. Ob sowas in VB geht, weiss ich nicht. Da kann Biber Dir sicher weiterhelfen face-smile
Member: Y4nn1ck
Y4nn1ck Jun 04, 2015 at 16:25:25 (UTC)
Goto Top
Habs jetzt so gelöst, sodass er nach dem auslosen aber vor der bekanntgabe die zahl mit den bis zu drei kranken abgleicht, also auch mit variablen die man direkt am anfang eingibt, zb a enter f enter o enter dann kommt keiner von den dreien dran