rockyourlife
Goto Top

Ich hab ein Problem dabei, eine in batch gesetzte Variable weiter zu geben.

Problem bim weiterverarbeiten einer zuvor gesetzten Variable.

Hallo und schoenen Tag face-smile

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 face-smile

Mfg Rafii

Content-ID: 158230

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

Ausgedruckt am: 26.11.2024 um 14:11 Uhr

bastla
bastla 09.01.2011 um 00:03:37 Uhr
Goto Top
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 "setlocal", also etwa als Zeile 1:
@echo off & setlocal
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
if %model%==1 goto aaa
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 ... face-wink 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 4 minuten zu spät
Übertreib doch nicht so - waren doch nur 3:53 ... face-wink
[/Edit]
60730
60730 09.01.2011 um 00:07:30 Uhr
Goto Top
moin,

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
RockYourLife
RockYourLife 09.01.2011 um 00:56:32 Uhr
Goto Top
Vielen dank, fuer euere hilfe face-smile
ich probiers gleich mal aus.

das mit dem "
if %model%==1 goto aaa
"
war nur ein fehler, weil ich getestet hab, ob er dann auch zu :aaa geht.
hab ich nur danach wieder vergessen weg zu machen face-sad

trotzdem vielen dank!
RockYourLife
RockYourLife 09.01.2011 um 01:04:03 Uhr
Goto Top
Ich hab mich da mit etwas vertan.
die stelle, die ihr als fehler nennt ist eigentlich:

if %model%==1 set re_1="Iphone"
if %model%==2 set re_1="Ipod Touch"
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"


das mit "goto aaa" war nur ein test, den ich vergessen hatte wieder umzuaendern.
Biber
Biber 22.01.2011 um 11:27:45 Uhr
Goto Top
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