2016-05-20 1 views
-2

ich brauche hilfe kombination "if" und "set" weil ich mir ein register in der schule mache, weil ich gelangweiltWie kombiniere ich und setze? in .bat

das problem ich brauche hilfe mit ist am ende der seite.

hier ist mein Code:

:start 
@echo off 
color b5 
title Register 
echo welcome! :) 
pause 
goto :icn 

:icn 
cls 
echo Is Callum Shevlin in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnn= 
if %icnn%==1 set /a %icnnn%== "in" 
if %icnn%==2 set /a %icnnn%== "out" 
goto :ici 

:ici 
cls 
echo Is Charlie Davies in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnn2= 
if %icnn2%==1 set /a %icnn22%== "in" 
if %icnn2%==2 set /a %icnn22%== "out" 
goto :icin 

:icin 
cls 
echo Is Joshua Glover in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnnii= 
if %icnnii%==1 set /a %icnniii%== "in" 
if %icnnii%==2 set /a %icnniii%== "out" 
goto :icint 

:icint 
cls 
echo Is Blake Harrison-Akers in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnnttii= 
if %icnnttii%==1 set /a %icnntttii%== "in" 
if %icnnttii%==2 set /a %icnntttii%== "out" 
goto :icie 

:icie 
cls 
echo Is Reece Radford in? 
echo. 
echo 1) in 
echo 2) out 

set /p ikki= 
if %ikki%==1 set /a %ikkii%== "in" 
if %ikki%==2 set /a %ikkii%== "out" 
goto :icikkkik 

:icikkkik 
cls 
echo Is Chris Martin in? 
echo. 
echo 1) in 
echo 2) out 

set /p kollo= 
if %kollo%==1 set /a %kolloo%== "in" 
if %kollo%==2 set /a %kolloo%== "out" 
goto :results 

:results 
cls 
echo -------------------- 
echo Callum Shevlin = %icnnn% 
echo ----------------------- 
echo Charlie Davies = %icnn22% 
echo ---------------------- 
echo Joshua Glover = %icnniii% 
echo ------------------------------ 
echo Blake Harrison-Akers = %icnnttt% 
echo --------------------- 
echo Recce Radford = %ikkii% 
echo -------------------- 
echo Chris Martin = %kolloo% 
echo --------------------- 
pause 
goto :start 

aber das Problem ist, nachdem Sie auf der Ergebnisseite bekommen haben es zeigt keinen Text nach dem „=“ Zeichen

ich will, was falsch wissen.

+0

Sie verwenden den 'set' Befehl nicht korrekt ... Sie möchten 'icnnn = in" 'setzen, mit nur einem Gleichheitszeichen, zum Beispiel nicht' set% icnnn% == "in" ' . Vermeiden Sie Leerzeichen vor und nach dem Gleichheitszeichen. Setzen Sie stattdessen doppelte Anführungszeichen um den vollständigen Befehl, wie "set" myVar = myValue "' ('set" icnn = in "'), so dass Sie unerwünschte Leerzeichen sehen können. Mehr zu 'set/?.' –

+0

Bitte lesen [Warum wird keine Zeichenkette mit 'echo% var%' ausgegeben, nachdem 'set var = text' in der Kommandozeile benutzt wurde?] (Http://stackoverflow.com/a/26388460/ 3074564) für eine detaillierte Erklärung der vorgenommenen Fehler beim Zuordnen einer Zeichenkette zu einer Variablen. Und lesen Sie auch die Antwort auf [Batch in Batch aufrufen?] (Http://stackoverflow.com/a/37226895/3074564), um die Fehlerüberprüfung auf ungültige Eingaben zu demonstrieren, da 'set/P' verwendet wird, um dem Batch-Benutzer die Eingabe einer Nummer zu ermöglichen vordefinierte Optionen Und alles nach 'set/A' wird als arithmetischer Ausdruck interpretiert. Verwenden Sie daher 'set/a' nur für arithmetische Ausdrücke. – Mofi

+0

Thx,: D. es hat wirklich geholfen! –

Antwort

0

Wie @DanielLuz sagte, haben Sie set falsch verwendet. Hier finden Sie Ihr Skript festgelegt:

:start 
@echo off 
color b5 
title Register 
echo welcome! :) 
pause 
goto :icn 

:icn 
cls 
echo Is Callum Shevlin in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnn= 
if %icnn%==1 set "icnnn=in" 
if %icnn%==2 set "icnnn=out" 
goto :ici 

:ici 
cls 
echo Is Charlie Davies in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnn2= 
if %icnn2%==1 set "icnn22%=in" 
if %icnn2%==2 set "icnn22%=out" 
goto :icin 

:icin 
cls 
echo Is Joshua Glover in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnnii= 
if %icnnii%==1 set "icnniii=in" 
if %icnnii%==2 set "icnniii=out" 
goto :icint 

:icint 
cls 
echo Is Blake Harrison-Akers in? 
echo. 
echo 1) in 
echo 2) out 

set /p icnnttii= 
if %icnnttii%==1 set "icnntttii=in" 
if %icnnttii%==2 set "icnntttii=out" 
goto :icie 

:icie 
cls 
echo Is Reece Radford in? 
echo. 
echo 1) in 
echo 2) out 

set /p ikki= 
if %ikki%==1 set "ikkii=in" 
if %ikki%==2 set "ikkii=out" 
goto :icikkkik 

:icikkkik 
cls 
echo Is Chris Martin in? 
echo. 
echo 1) in 
echo 2) out 

set /p kollo= 
if %kollo%==1 set "kolloo=in" 
if %kollo%==2 set "kolloo=out" 
goto :results 

:results 
cls 
echo -------------------- 
echo Callum Shevlin = %icnnn% 
echo ----------------------- 
echo Charlie Davies = %icnn22% 
echo ---------------------- 
echo Joshua Glover = %icnniii% 
echo ------------------------------ 
echo Blake Harrison-Akers = %icnnttt% 
echo --------------------- 
echo Recce Radford = %ikkii% 
echo -------------------- 
echo Chris Martin = %kolloo% 
echo --------------------- 
pause 
goto :start 

Außerdem würden Sie besser dran, die choice Befehl. Ersetzen Sie alle Instanzen von set /p und Ihre if s auf das folgende Beispiel (natürlich sollten Sie es ändern, um die richtige Variable zu verwenden):

choice /c 12 /n >nul 
if %errorlevel% == 1 set "VARIABLEHERE=in" 
if %errorlevel% == 2 set "VARIABLEHERE=out" 

Weitere Daten können mit choice /? finden.

+0

thx für das Reparieren des Codes, aber ich bleibe bei set/p, weil ich set/p seit Jahren benutze und noch nie von dem Wahlkommando gehört habe, und ich bin auch gewöhnt an set/p zu benutzen, jedenfalls thx: D. –

+0

aber die Sache ist, wenn ive meine .bat RPG-Spiele in der Vergangenheit gemacht hat, "==" hat gut funktioniert, wie kommt es dosent Arbeit plötzlich? –

+0

@blakeharrisonakerz Es funktioniert nur mit dem set-Befehl nicht. –