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

Probleme Im Batch Menü

Frage Entwicklung Batch & Shell

Mitglied: DomiZone1

DomiZone1 (Level 1) - Jetzt verbinden

22.02.2015 um 21:50 Uhr, 909 Aufrufe, 5 Kommentare

Hallo Leute ich wollte nur ein (Batch Spiel) Programmieren

dabe tratt das problemm auf

"set" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

01.
@echo off 
02.
 
03.
set B=^^^<----- 
04.
set L= 
05.
set E= 
06.
 
07.
:Start 
08.
echo Wilkommen zu Unnamed-Game 
09.
echo. 
10.
echo Neues Spiel Beginnen %B% 
11.
echo SpielStand Laden     %L% 
12.
echo Beenden              %E% 
13.
echo -------------------------- 
14.
choice /n /c:wse 
15.
if errorlevel 255 goto Start 
16.
if errorlevel 3 goto Bestaetigen 
17.
if errorlevel 2 goto Runter 
18.
if errorlevel 1 goto Hoch 
19.
if errorlevel 0 goto Start 
20.
 
21.
:Hoch 
22.
if %B%==^<----- set B= && set L= && set E=^^^<----- && cls && goto Start   
23.
if %L%==^<----- set B=^^^<----- && set L= && set E= && cls && goto Start 
24.
if %E%==^<----- set B= && set L=^^^<----- && set E= && cls && goto Start 
25.
 
26.
:Runter 
27.
if %B%==^<----- set B= && set L=^^^<----- && set E= && cls && goto Start   
28.
if %L%==^<----- set B= && set L= && set E=^^^<----- && cls && goto Start 
29.
if %E%==^<----- set B=^^^<----- && set L= && set E= && cls && goto Start 
30.
 
31.
:Bestaetigen 
32.
if %B%==^<----- call New-Game.bat 
33.
if %L%==^<----- call Load-Game.bat 
34.
if %E%==^<----- exit
Wenn ich bei den IF´s wie im code es versuche kommt es beim zweiten mal w oder s drücken
Wenn ich bei den IF´s es so versuche if %L%==^^^<----- dann kommt es direkt wenn ich w oder s drücke
Wenn ich die ^ ganz weglasse geht es erst recht nicht

Kann mir einer Helfen

Danke im Vorraus
Mitglied: rubberman
22.02.2015, aktualisiert um 22:19 Uhr
Hallo DomiZone1,

ich weiß wirklich nicht, warum du so ein kryptisches Zeug als Variablenwert setzen musst, ist aber letztlich nicht der Grund für den Fehler. Irgendwann (vermutlich "beim zweiten mal w oder s drücken") ist eine deiner Variablen beim Vergleich nicht definiert. Sagen wir mal %B% würde zu einem leeren String expandiert werden, dann sieht dein Vergleich etwa so aus:
if ==<----- set... 
Wen du dich hier im Forum mal umsiehst, wirst du kaum jemanden finden, der beim Setzen einer Variablen oder bei nicht-numerischen Vergleichen ohne Anführungszeichen arbeitet. Dann fällt dieser ganze Escape Quatsch weg. In deinem Fall gäbe es übrigens auch noch ein IF DEFINED um zu prüfen, ob eine Variable definiert ist (einen Wert hat).

Grüße
rubberman
Bitte warten ..
Mitglied: DomiZone1
23.02.2015 um 18:48 Uhr
Das ein vergleich dann so aussieht ist ausgeschlossen! er sagt ja das der set befehl nicht verarbeitet werden kann und deshalb das ganze ding abstürzt der grund für diese kryptischen zeichen in den variablen soll einen pfeil darstellen damit der user weiss was gerade ausgewählt ist.

zu deiner sache mit den ohne die " arbeiten das mach ich schon seit ewigkeiten so und es hat noch nie probleme gegeben deswegen arbeite ich nicht mit den " das mal dazu ich habe es trotzdem mal ein bisschen mit denen rum gespielt und habe immer noch den fehler das das *set angeblich syntaktisch an dieser Stelle nicht verarbeitet werden kann*

evtl kannst du mir mal ein link geben wo ich das genau nachlesen kann wie das mann mit " arbeiten kann das habe ich noch nicht gesehen bzw vergessen wie es ging

Danke trotzdem für deine Antwort

LG DomiZone1
Bitte warten ..
Mitglied: rubberman
23.02.2015 um 20:40 Uhr
Hallo DomiZone1.

Das ein vergleich dann so aussieht ist ausgeschlossen!
Da bist du so was von auf dem Holzweg.
Teste:
01.
set B= 
02.
if %B%==X set Y=Z
Fehlermeldung:
"set" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Schau doch einfach mal in deinen Code. Sowohl in Zeile 22, wie auch in Zeile 27 wird B negiert bzw. der Wert auf ein Leerzeichen reduziert (was den selben Fehler hervorruft), da du ein Leerzeichen zwischen = und && stehen hast. Eine dieser Zeilen wird aber beim 2. Durchlauf aufgerufen. Somit kann dein Code nur krachen gehen.

zu deiner sache mit den ohne die " arbeiten das mach ich schon seit ewigkeiten so
Und deshalb ist es automatisch richtig?
Teste:
set "B=<-----"
Erstaunlicherweise wird der Wert ganz ohne Escapesequenzen fehlerfrei gesetzt.
Ebenso wird ein
if "%B%"=="X" set "Y=Z"
keinen Fehler verursachen wenn B nicht definiert ist oder nur ein Leerzeichen enthält.

Alles Dinge, die man erst einmal probiert, bevor man erklärt, dass das alles Unsinn ist und man das ja schon immer anders gemacht hat

evtl kannst du mir mal ein link geben
Brauchst du ja nun nicht mehr

Grüße
rubberman
Bitte warten ..
Mitglied: DomiZone1
25.02.2015 um 18:32 Uhr
Ich habe das jetzt mal "getestet" weil da eine fehlermeldung und ich nicht mehr wusste wie die hieß

Wenn ich es so mache set "B=<-----" kommt:
Das System kann die angegebene Datei nicht finden.

zweitens du kennst wohl den choice befehl noch nicht oder hast den code nicht wirklich gelesen

da ich choice mit den if errorlevel´n drin habe komme ich mit s eins runter mit w eins hoch im menü und bestätige mit e

ich drücke zum testen s um eins runter zu gehen was passiert ist da wir am anfang B gesetzt haben wird die erste if abfrage
bei (:Runter) bestätigt dann macht er weiter er soll b entleren damit ich da nichts mehr seh dann soll er L auf ^<----- setzen damit ich da was
sehe und die fehler meldung Das System kann die angegebene Datei nicht finden. nicht erscheint dann könnte ich den letzten eigentlich weglassen
aber das war (copy & paste) arbeit so dann sollte er die cmd clearen und zum (:Start) zurück springen nun sollte der pfeil eins weiter unten sein
so würde ich jetzt wieder s drücken wiederhollt er das alles noch mal nur das dies mal B nicht bestätigt sondern L bestätigt wird und das L jetzt
entlerrt und E auf den pfeil gesetzt wird nun das problem ist er scheitert direkt beim SET BEFEHL das wegen frage ich auch hier weil mir das
noch nie so passiert ist und ich keinen plan habe wie ich das beheben kann

Im übrigen arbeite ich mit (Windows 7 HomePremium 64 bit) nur damit du nicht mit win8 oder anderen versionen arbeitest und da gehts dann auf einmal

LG DomiZone1
Bitte warten ..
Mitglied: rubberman
25.02.2015 um 23:57 Uhr
Wenn ich es so mache set "B=<-----" kommt:
Das System kann die angegebene Datei nicht finden.
Joa, wenn du es mit ECHO ausgibst, nicht beim SET. Das wiederum hättest du gesehen, wenn du ECHO ON gesetzt hättest und die ganzen CLSs rausgeschmissen hättest. Die kannst du immer noch rein schreiben, wenn der Code mal läuft.
Also set "B=^<-----" sollte es dann auch für deinen Zweck tun.

zweitens du kennst wohl den choice befehl noch nicht oder hast den code nicht wirklich gelesen
Hehe, so so. Ich kannte den CHOICE Befehl schon, als er noch eine ganz andere Syntax hatte und bevor er mit XP vorübergehend verschwunden war, um mit Vista wieder aufzutauchen. Und natürlich habe ich deinen Code gelesen und weiß was er tun soll. Anders hätte ich dich wohl kaum auf deine Fehler aufmerksam machen können.

Was passiert den nun, wenn du jeweils beide Vergleichsoperanden in Anführungszeichen setzt?

Im übrigen arbeite ich mit (Windows 7 HomePremium 64 bit) nur damit du nicht mit win8 oder anderen versionen arbeitest und da gehts dann auf einmal
Hat damit überhaupt nichts zu tun.


BTW: Da du ja immer noch glaubst, mit Batch Spiele schreiben zu wollen, dann lass mich auch mal ein Spielchen machen, wie ein Menü aussehen könnte:
01.
@echo off &setlocal 
02.
 
03.
:: *** BENUTZERDEFINIERTE EINSTELLUNGEN *** 
04.
:: Menütitel 
05.
set "headline=SYSTEM-PROGRAMME" 
06.
 
07.
:: Menüpunkte, in Anführungszeichen und kommagetrennt: 
08.
set items="Eingabeaufforderung","Editor","Rechner","Windows-Explorer","Zeichentabelle" 
09.
 
10.
:: Menüzeile, die beim Start markiert sein soll 
11.
set /a "c=1" 
12.
 
13.
:: Farbkombination für die Markierung der Menüpunkte 
14.
set "col=4e" 
15.
 
16.
:: Tasten zum Navigieren nach oben und unten 
17.
set "up=W" 
18.
set "down=S" 
19.
 
20.
::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
21.
:: *** ASSOZIATIVES ARRAY ANLEGEN *** 
22.
set /a "n=0" 
23.
for %%i in (%items%) do ( 
24.
  set /a "n+=1" 
25.
  setlocal EnableDelayedExpansion 
26.
  for %%j in (!n!) do ( 
27.
    endlocal 
28.
    set "menitem_%%j= %%~i " 
29.
30.
31.
 
32.
:: *** VARIABLE UND DATEI FÜR FARBIGE AUSGABE ANLEGEN *** 
33.
call :initColorPrint 
34.
 
35.
:: *** HAUPTSCHLEIFE FÜR DAS ANZEIGEN DES MENÜS *** 
36.
:loop 
37.
cls 
38.
echo(&echo    *** %headline% ***&echo( 
39.
echo   nach oben: [%up%]   nach unten: [%down%]   bestaetigen: [Enter] 
40.
echo(&echo( 
41.
setlocal EnableDelayedExpansion 
42.
for /l %%i in (1 1 %n%) do ( 
43.
  if %c%==%%i (call :colorPrintVar %col% menitem_%%i&echo() else echo !menitem_%%i! 
44.
45.
endlocal 
46.
call :getchoice "%up%%down%" 
47.
set "ret=%errorlevel%" 
48.
if %ret%==2 ( 
49.
  if %c%==%n% (set /a "c=1") else set /a "c+=1" 
50.
  goto loop 
51.
) else if %ret%==1 ( 
52.
  if %c%==1 (set /a "c=n") else set /a "c-=1" 
53.
  goto loop 
54.
55.
 
56.
:: *** TEMPORÄRE DATEI LÖSCHEN *** 
57.
call :cleanupColorPrint 
58.
echo( 
59.
 
60.
:: *** SUBROUTINE MIT DEM INDEX DES AUSGEWÄHLTEN MENÜPUNKTS AUFRUFEN *** 
61.
call :choice_%c% 
62.
 
63.
:: *** PROGRAMM ENDE *** 
64.
exit /b 
65.
 
66.
:: *** INTERNE SUBROUTINEN *** 
67.
:: Routine für ein CHOICE-ähnliches Verhalten 
68.
:getchoice ByVal_Choices 
69.
setlocal DisableDelayedExpansion 
70.
set "n=0" &set "c=" &set "e=" &set "map=%~1" 
71.
for /f "eol=1 delims=" %%i in ('xcopy /lwq "%~f0" :\') do set "c=%%i" 
72.
set "c=%c:~-1%" 
73.
if defined c ( 
74.
  for /f delims^=^ eol^= %%i in ('cmd /von /u /c "echo(!map!"^|find /v ""^|findstr .') do ( 
75.
    set /a "n += 1" &set "e=%%i" 
76.
    setlocal EnableDelayedExpansion 
77.
    if /i "!e!"=="!c!" ( 
78.
      for /f %%j in ("!n!") do endlocal &endlocal &exit /b %%j 
79.
80.
    endlocal 
81.
82.
) else endlocal &exit /b 0 
83.
endlocal &goto getchoice 
84.
 
85.
:: Routinen für farbige Ausgabe von Text 
86.
:initColorPrint 
87.
for /F "tokens=1,2 delims=#" %%a in ('"prompt $H# &for %%b in (1) do rem"') do set "DEL=%%a" 
88.
<nul >"%temp%\x" set /p "=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%.%DEL%" 
89.
exit /b 
90.
 
91.
:colorPrintVar ByVal_Color ByRef_StrVar 
92.
if not defined %~2 exit /b 
93.
setlocal enableDelayedExpansion 
94.
set "str=a%DEL%!%~2:\=a%DEL%\..\%DEL%%DEL%%DEL%!" 
95.
set "str=!str:/=a%DEL%/..\%DEL%%DEL%%DEL%!" 
96.
set "str=!str:"=\"!" 
97.
pushd "%temp%" 
98.
findstr /p /A:%1 "." "!str!\..\x" nul 
99.
popd 
100.
exit /b 
101.
 
102.
:cleanupColorPrint 
103.
del "%temp%\x" 
104.
exit /b 
105.
::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
106.
 
107.
:: *** BENUTZERDEFINIERTE SUBROUTINEN choice_1 BIS choice_n (MIT n = ANZAHL MENÜPUNKTE) *** 
108.
:choice_1 
109.
start "" "%comspec%" 
110.
exit /b 
111.
 
112.
:choice_2 
113.
start "" "%SystemRoot%\system32\notepad.exe" 
114.
exit /b 
115.
 
116.
:choice_3 
117.
start "" "%SystemRoot%\system32\calc.exe" 
118.
exit /b 
119.
 
120.
:choice_4 
121.
start "" /max "%SystemRoot%\explorer.exe" /n,/e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} 
122.
exit /b 
123.
 
124.
:choice_5 
125.
start "" "%SystemRoot%\system32\charmap.exe" 
126.
exit /b
Zwischen den beiden Linien mit den Tilden solltest du nichts ändern. Der Rest ist ausdrücklich zur Anpassung vorgesehen...

Grüße
rubberman
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Winrar entpacken - Probleme bei Pfad (7)

Frage von Concurve zum Thema Batch & Shell ...

Batch & Shell
gelöst Probleme bei der Funktionsweise einer im Hintergrund laufenden Batch (5)

Frage von duderu zum Thema Batch & Shell ...

Batch & Shell
Batch-Probleme bei Verschlüsselung

Frage von Jonas1806 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Xcopy Probleme (3)

Frage von GtaGamer zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...