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

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

Frage Entwicklung Batch & Shell

Mitglied: RockYourLife

RockYourLife (Level 1) - Jetzt verbinden

08.01.2011 um 23:39 Uhr, 2843 Aufrufe, 5 Kommentare

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

Mit freundlichen Grüßen Rafii
Mitglied: bastla
09.01.2011 um 00:03 Uhr
Hallo RockYourLife und willkommen im Forum!

Gleich vorweg: Es wäre wesentlich einfacher, sich auf Deinen Code zu beziehen, wenn dieser entsprechend formatiert 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 ... 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 ...
[/Edit]
Bitte warten ..
Mitglied: 60730
09.01.2011 um 00:07 Uhr
moin,

2-3 tipps...

  • benutze <code> und </code> - siehe Formatierungshilfe
  • 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
01.
:start 
02.
echo on 
03.
rem rest wurde gesnippt 
04.
 
05.
:results 
06.
cls 
07.
echo model-model2-fw-re_1-re_2  
08.
echo %model%-%model2%-%fw%-%re_1%-%re_2% 
09.
pause 
10.
 
11.
echo You have a %re_1% . 
12.
echo Its a %re_2% %re_1% . 
13.
echo It has the firmware %fw% . 
14.
echo Is this right? 
15.
echo. 
16.
echo Press any key to continue 
17.
pause>nul 
18.
cls 
19.
 
20.
set programm=%re_1%-%re_2%-%fw% 
21.
 
22.
echo %programm% 
23.
pause

Gruß
Edit 4 minuten zu spät
Bitte warten ..
Mitglied: RockYourLife
09.01.2011 um 00:56 Uhr
Vielen dank, fuer euere hilfe
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

trotzdem vielen dank!
Bitte warten ..
Mitglied: RockYourLife
09.01.2011 um 01:04 Uhr
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.
Bitte warten ..
Mitglied: Biber
22.01.2011 um 11:27 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...