Ich hab ein Problem dabei, eine in batch gesetzte Variable weiter zu geben.
Problem bim weiterverarbeiten einer zuvor gesetzten Variable.
Hallo und schoenen Tag
ich sitze seit stunden an dem Problem, dass ich eine Variable in einer batch setzten will, die von einer anderen Variable abhaengig ist.
Hier meine batch:
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
@echo off
:start
echo Iphone type "1"
echo Ipod Touch type "2"
echo.
set /p model="Set your model: (type 1 or 2):"
if %model%==1 goto iphone_s1
if %model%==2 goto ipod_s1
cls
goto s_0
:iphone_s1
echo.
echo Iphone type "c"
echo Iphone 3G type "3g"
echo Iphone 3GS type "3gs"
echo Iphone 4 type "4"
echo.
set /p model2="Which Iphone? Its:"
if %model2%==c goto iphone_s2_c
if %model2%==3g goto iphone_s2_3g
if %model2%==3gs goto iphone_s2_3gs
if %model2%==4 goto iphone_s2_4
cls
goto iphone_s1
rem --------------------------------------------Iphone------------------------------------------------
:iphone_s2_c
echo.
echo 1.0
echo 1.0.1
echo 1.0.2
echo 1.1.1
echo 1.1.2
echo 1.1.3
echo 1.1.4
echo 2.0
echo 2.0.1
echo 2.0.2
echo 2.1
echo 2.2
echo 2.2.1
echo 3.0
echo 3.0.1
echo 3.1
echo 3.1.2
echo 3.1.3
echo.
set /p fw="type in your firmware: "
goto results
rem --------------------------------------------Iphone 3G----------------------------------------------
:iphone_s2_3g
echo.
echo 2.0
echo 2.0.1
echo 2.0.2
echo 2.1
echo 2.2
echo 2.2.1
echo 3.0
echo 3.0.1
echo 3.1
echo 3.1.2
echo 3.1.3
echo 4.0
echo 4.0.1
echo 4.1
echo 4.2
echo 4.2.1
echo.
set /p fw="type in your firmware: "
goto results
rem --------------------------------------------Iphone 3GS---------------------------------------------
:iphone_s2_3g
echo.
echo 3.0
echo 3.0.1
echo 3.1
echo 3.1.2
echo 3.1.3
echo 4.0
echo 4.0.1
echo 4.1
echo 4.2
echo 4.2.1
echo.
set /p fw="type in your firmware: "
goto results
rem --------------------------------------------Iphone 4-----------------------------------------------
:iphone_s2_3g
echo.
echo 4.0
echo 4.0.1
echo 4.1
echo 4.2
echo 4.2.1
echo.
set /p fw="type in your firmware: "
goto results
if %model%==1 goto aaa
if %model2%==c set re_2=" "
if %model2%==3g set re_2="3G"
if %model2%==3gs set re_2="3GS"
if %model2%==4 set re_2="4"
:results
cls
echo You have a %re_1%.
echo Its a %re_2% %re_1%.
echo It has the firmware %fw%.
echo Is this right?
echo.
echo Press any key to continue
pause>nul
cls
set programm=%re_1%-%re_2%-%fw%
echo %programm%
pause
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich finde einfach meinen fehler nicht! >.<
Ende klappt nur die letzte der 3 benutzen Variablen!
also aus dem
set programm=%re_1%-%re_2%-%fw%
echo %programm%"
kommt nur ein mickriges
"--1.0(jenachdem was ich als FW eingegeben hab)"
raus -.-
bitte um hilfe
Mfg Rafii
Hallo und schoenen Tag
ich sitze seit stunden an dem Problem, dass ich eine Variable in einer batch setzten will, die von einer anderen Variable abhaengig ist.
Hier meine batch:
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
@echo off
:start
echo Iphone type "1"
echo Ipod Touch type "2"
echo.
set /p model="Set your model: (type 1 or 2):"
if %model%==1 goto iphone_s1
if %model%==2 goto ipod_s1
cls
goto s_0
:iphone_s1
echo.
echo Iphone type "c"
echo Iphone 3G type "3g"
echo Iphone 3GS type "3gs"
echo Iphone 4 type "4"
echo.
set /p model2="Which Iphone? Its:"
if %model2%==c goto iphone_s2_c
if %model2%==3g goto iphone_s2_3g
if %model2%==3gs goto iphone_s2_3gs
if %model2%==4 goto iphone_s2_4
cls
goto iphone_s1
rem --------------------------------------------Iphone------------------------------------------------
:iphone_s2_c
echo.
echo 1.0
echo 1.0.1
echo 1.0.2
echo 1.1.1
echo 1.1.2
echo 1.1.3
echo 1.1.4
echo 2.0
echo 2.0.1
echo 2.0.2
echo 2.1
echo 2.2
echo 2.2.1
echo 3.0
echo 3.0.1
echo 3.1
echo 3.1.2
echo 3.1.3
echo.
set /p fw="type in your firmware: "
goto results
rem --------------------------------------------Iphone 3G----------------------------------------------
:iphone_s2_3g
echo.
echo 2.0
echo 2.0.1
echo 2.0.2
echo 2.1
echo 2.2
echo 2.2.1
echo 3.0
echo 3.0.1
echo 3.1
echo 3.1.2
echo 3.1.3
echo 4.0
echo 4.0.1
echo 4.1
echo 4.2
echo 4.2.1
echo.
set /p fw="type in your firmware: "
goto results
rem --------------------------------------------Iphone 3GS---------------------------------------------
:iphone_s2_3g
echo.
echo 3.0
echo 3.0.1
echo 3.1
echo 3.1.2
echo 3.1.3
echo 4.0
echo 4.0.1
echo 4.1
echo 4.2
echo 4.2.1
echo.
set /p fw="type in your firmware: "
goto results
rem --------------------------------------------Iphone 4-----------------------------------------------
:iphone_s2_3g
echo.
echo 4.0
echo 4.0.1
echo 4.1
echo 4.2
echo 4.2.1
echo.
set /p fw="type in your firmware: "
goto results
if %model%==1 goto aaa
if %model2%==c set re_2=" "
if %model2%==3g set re_2="3G"
if %model2%==3gs set re_2="3GS"
if %model2%==4 set re_2="4"
:results
cls
echo You have a %re_1%.
echo Its a %re_2% %re_1%.
echo It has the firmware %fw%.
echo Is this right?
echo.
echo Press any key to continue
pause>nul
cls
set programm=%re_1%-%re_2%-%fw%
echo %programm%
pause
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
rem ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich finde einfach meinen fehler nicht! >.<
Ende klappt nur die letzte der 3 benutzen Variablen!
also aus dem
set programm=%re_1%-%re_2%-%fw%
echo %programm%"
kommt nur ein mickriges
"--1.0(jenachdem was ich als FW eingegeben hab)"
raus -.-
bitte um hilfe
Mfg Rafii
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158230
Url: https://administrator.de/contentid/158230
Ausgedruckt am: 26.11.2024 um 14:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo RockYourLife und willkommen im Forum!
Gleich vorweg: Es wäre wesentlich einfacher, sich auf Deinen Code zu beziehen, wenn dieser entsprechend wäre ...
Nicht für das Problem verantwortlich, aber auf jeden Fall sinnvoll: Ergänze am Anfang des Batches ein "
Damit "vergisst" der CMD-Interpreter am Ende des Batches alle an den Variablen vorgenommenen Änderungen - nicht zuletzt in der Testphase wichtig, da so nur die Werte des jeweiligen Testlaufes verwendet werden und nicht ev Überreste vorhergehender Tests (in der selben CMD-Shell).
Dass einige Sprungadressen falsch bzw fehlerhaft (":iphone_s2_3g" kommt 3 x vor) sind, hast Du ja hoffentlich selbst schon bemerkt ...
Die Zeile
würde dafür sorgen, dass eine Zuweisung der Werte für %re_2% gleich gar nicht erfolgen kann, da bereits vorher der Sprung zum (nicht vorhandenen) Label "aaa" vorgenommen würde - wenn diese Zeile überhaupt erreicht würde ... Dazu wäre es nötig, das Label ":results" bereits davor (also zumindest 7 Zeilen vor der derzeitigen Position) zu platzieren.
Dass aber dann noch immer keine Wertzuweisung an %re_1% erfolgte, steht noch auf einem anderen Blatt ...
Grüße
bastla
[Edit] @t-mo
[/Edit]
Gleich vorweg: Es wäre wesentlich einfacher, sich auf Deinen Code zu beziehen, wenn dieser entsprechend wäre ...
Nicht für das Problem verantwortlich, aber auf jeden Fall sinnvoll: Ergänze am Anfang des Batches ein "
setlocal
", also etwa als Zeile 1:@echo off & setlocal
Dass einige Sprungadressen falsch bzw fehlerhaft (":iphone_s2_3g" kommt 3 x vor) sind, hast Du ja hoffentlich selbst schon bemerkt ...
Die Zeile
if %model%==1 goto aaa
Dass aber dann noch immer keine Wertzuweisung an %re_1% erfolgte, steht noch auf einem anderen Blatt ...
Grüße
bastla
[Edit] @t-mo
Edit 4 minuten zu spät
Übertreib doch nicht so - waren doch nur 3:53 ... [/Edit]
moin,
2-3 tipps...
Gruß
Edit 4 minuten zu spät
2-3 tipps...
- benutze <code> und </code> - siehe
- schreibe niemals @echo off, wenn du nicht aus der Testphase draussen bist
- benutze stattdessen echo %parameter%
- und hin und wieder eine Pause, sowohl im Programm, als auch zum denken. Ich schreibe sehr oft Stichworte aufs gute alte Papier und erst dann in die Tasten - ist deutlich schneller
- keine Sprungziele benennen, die nicht benutzt werden. (aaa)/ipod usw.
- prüfe, ob du Variablen überhaupt benutzt. Ein set re_1 taucht nirgendwo auf
:start
echo on
rem rest wurde gesnippt
:results
cls
echo model-model2-fw-re_1-re_2
echo %model%-%model2%-%fw%-%re_1%-%re_2%
pause
echo You have a %re_1% .
echo Its a %re_2% %re_1% .
echo It has the firmware %fw% .
echo Is this right?
echo.
echo Press any key to continue
pause>nul
cls
set programm=%re_1%-%re_2%-%fw%
echo %programm%
pause
Gruß
Edit 4 minuten zu spät
Moin PopYourWife,
ich weiss nich, ob es dir entgangen ist - nach deinem letzten Feedback ist irgendwie noch nicht ganz klar,
ob denn nun die Frage hinreichend beantwortet ist, ob der Schnipsel nun tut, was ein Schnipsel halt tun soll
und ob hier nun ein wasabifarbener Haken dran kann.
Bitte gib Feedback.
Grüße
Biber
ich weiss nich, ob es dir entgangen ist - nach deinem letzten Feedback ist irgendwie noch nicht ganz klar,
ob denn nun die Frage hinreichend beantwortet ist, ob der Schnipsel nun tut, was ein Schnipsel halt tun soll
und ob hier nun ein wasabifarbener Haken dran kann.
Bitte gib Feedback.
Grüße
Biber