WinFuture-Forum.de: set Befehl - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

set Befehl


#1 Mitglied ist offline   cool_brick24 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Februar 18
  • Reputation: 0

geschrieben 19. August 2018 - 09:31

Hallo liebe User *erneut*
Ich baue mir grade ein Menü für ein Spiel und benutze für mein Menü den set Befehl:
@echo off
:menu
cls
set Erst= [
set Danach=]

set Erst2=
set Danach2=

set Erst3=
set Danach3=


echo.
echo.
echo !***************************************!
echo !           %Erst%Wilkommen%Danach%                !
echo !***************************************!
echo !            %Erst2%1.Spielen%Danach2%                  !
echo !                                       !   
echo !              %Erst3%2.Exit%Danach3%                   !
echo !                                       ! 
echo !                                       ! 
echo !                                       !
echo !                                       !  
echo !***************************************!

Choice /C 12A /N /M "Druecken sie 1 fuer spielen oder 2 fuer Exit!"
if %errorlevel%==255 goto menu
if %errorlevel%==1 goto ForStart
if %errorlevel%==2 goto ForExit
goto menu

:ForExit
set Erst3= [ 
set Danach3=]
set Erst2= 
set Danach2=
echo forexit

pause


Doch mein Problem ist: wenn 2 (also Exit) gedrückt wird, wird zwar forexit ausgegeben, aber "Erst3" und "Danach3" ändern sich nicht. Doch bei

 @echo off
:menu
cls
set Erst = [
set Danach=]


funtkioniert es.


Kein Plan wieso.

Danke im voraus!!!

Dieser Beitrag wurde von cool_brick24 bearbeitet: 19. August 2018 - 09:32

Meep! Meep!
set Coding=off
echo Start Coding in 3
ping Localhost -n 1 >NUL
cls
echo Start Coding in 2
ping Localhost -n 1 >NUL
cls
echo Start Coding in 1
cls && echo START CODING!
0

Anzeige



#2 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.925
  • Beigetreten: 14. August 15
  • Reputation: 200

geschrieben 19. August 2018 - 10:02

Eigentlich nennt sich die Terminierung davor und danach. :wink:

Solche "Sonderzeichen mit spezieller Bedeutung" wie Klammern in Echo Befehlen werden mit ^ maskiert um sie anzuzeigen. Ansonsten werden sie als Teil einer Maske/eines Befehls verstanden.

Beispiel:

^[Wilkommen^]

Mach einfach 2 Strings.

set welcome_standard="Willkommen"
set welcome_selected="^[Wilkommen^]"

und tausch sie aus. Dann brauchst du dieses umständliche davor und danach nicht.

Was den Fehler bei dir betrifft, für später. Wenn man set nutzt um einen String zu setzen der ein Leerzeichen beinhaltet, dann muss der Bezeichner und der String in Klammern.

Beispiel:

set "Bezeichner= Inhalt"

Dann wird das Leerzeichen als Teil des Strings Inhalt verstanden.

Dieser Beitrag wurde von Gispelmob bearbeitet: 19. August 2018 - 11:13

0

#3 Mitglied ist offline   cool_brick24 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Februar 18
  • Reputation: 0

geschrieben 19. August 2018 - 12:14

Danke für deine antwort!

Dieser Beitrag wurde von cool_brick24 bearbeitet: 19. August 2018 - 12:16

Meep! Meep!
set Coding=off
echo Start Coding in 3
ping Localhost -n 1 >NUL
cls
echo Start Coding in 2
ping Localhost -n 1 >NUL
cls
echo Start Coding in 1
cls && echo START CODING!
0

#4 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 190
  • Beigetreten: 30. Juni 12
  • Reputation: 8

geschrieben 19. August 2018 - 12:18

Die eckigen Klammern sind bei Batch okay, man braucht keine Terminierung.

Zitat

aber "Erst3" und "Danach3" ändern sich nicht

Dir fehlte der Sprungbefehl zurück zu :menu, um alles mit den Veränderungen neu anzeigen zu lassen.



so klappt es:
@echo off
set "Erst=["
set "Danach=]"

set "Erst2= "
set "Danach2= "

set "Erst3= "
set "Danach3= "


:menu
cls
echo.
echo.
echo !***************************************!
echo !   		%Erst%Willkommen%Danach%                !
echo !***************************************!
echo !   		%Erst2%1.Spielen%Danach2%     			!
echo !                           			!   
echo ! 			%Erst3%2.Exit%Danach3%                  !
echo !                           			! 
echo !                           			! 
echo !                           			!
echo !                           			!  
echo !***************************************!

Choice /C 12A /N /M "Druecken sie 1 fuer spielen oder 2 fuer Exit!"
if %errorlevel%==255 goto menu
if %errorlevel%==1 (set "Erst2=["&set "Danach2=]"&set "Erst3= "&set "Danach3= ")
if %errorlevel%==2 call :ForExit
goto menu


goto :menu
pause
goto :eof




##funktionen:
:ForExit
	set "Erst3=[" 
	set "Danach3=]"
	set "Erst2= "
	set "Danach2= "
goto :eof


Das Beispiel enthält 2 Varianten der Errorlevelabfrage, welche besser für dein vorhaben ist, musst du entscheiden
0

#5 Mitglied ist offline   cool_brick24 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Februar 18
  • Reputation: 0

geschrieben 19. August 2018 - 12:25

MasterP82 so ganz kapier ich das nicht: was ist
:eof

Meep! Meep!
set Coding=off
echo Start Coding in 3
ping Localhost -n 1 >NUL
cls
echo Start Coding in 2
ping Localhost -n 1 >NUL
cls
echo Start Coding in 1
cls && echo START CODING!
0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 13.092
  • Beigetreten: 08. April 06
  • Reputation: 483

geschrieben 19. August 2018 - 13:27

"Goto:eof" = "Goto: End off File" ;)
0

#7 Mitglied ist offline   cool_brick24 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Februar 18
  • Reputation: 0

geschrieben 19. August 2018 - 15:52

Danke. Ich hab den Code mal ausprobiert. klappt leider immer noch nicht.
Meep! Meep!
set Coding=off
echo Start Coding in 3
ping Localhost -n 1 >NUL
cls
echo Start Coding in 2
ping Localhost -n 1 >NUL
cls
echo Start Coding in 1
cls && echo START CODING!
0

#8 Mitglied ist online   DK2000 

  • Gruppe: Administration
  • Beiträge: 18.403
  • Beigetreten: 19. August 04
  • Reputation: 1.050

geschrieben 19. August 2018 - 16:32

@echo off
set "Erst=["
set "Danach=]"

set "Erst2= "
set "Danach2= "

set "Erst3= "
set "Danach3= "


:loop

call :menu

Choice /C 12A /N /M "Druecken sie 1 fuer spielen oder 2 fuer Exit!"

if %errorlevel%==255 goto :loop

if %errorlevel%==1 (
	set "Erst2=["&set "Danach2=]"&set "Erst3= "&set "Danach3= "
	goto :loop)


if %errorlevel%==2 (
	set "Erst3=["&set "Danach3=]"&set "Erst2= "&set "Danach2= "
	call :menu
	goto :eof)


:menu
cls
echo.
echo.
echo !***************************************!
echo !                  %Erst%Willkommen%Danach%         !
echo !***************************************!
echo !                  %Erst2%1.Spielen%Danach2%          !
echo !                                       !   
echo !                  %Erst3%2.Exit%Danach3%             !
echo !                                       ! 
echo !                                       ! 
echo !                                       !
echo !                                       !  
echo !***************************************!
goto :eof

Nutella hat nur sehr wenig Vitamine.
Deswegen muss man davon relativ viel essen.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0