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
GELÖST

(Batch) Einzelne Zeile auslesen?

Frage Entwicklung Batch & Shell

Mitglied: Budders

Budders (Level 1) - Jetzt verbinden

20.04.2013 um 11:05 Uhr, 3192 Aufrufe, 3 Kommentare, 1 Danke

Ich bin gerade dabei eine Art Tamagochi in Batch zu programmieren und habe ein Problem im "Shop"

Guten Tag,
ich habe gestern begonnen einen Tamagochi in Batch zu programmieren.
Nun möchte ich für den Shop Bereich die Preise aus einer Datei auslesen, es ist jeweils nur eine Zahl pro Zeile in der entsprechenden Datei.
Ich habe bereits Biber's LineToVar gefunden, doch damit habe ich das Problem, dass es eigene Sprungmarken verwendet..
Wenn es eine Möglichkeit gibt zur zuletzt verwendeten Sprungmarke zurück zu springen wäre das natürlich großartig und das Problem wäre gelöst.
Hier ist mal ein Teil des Codes.
01.
echo Was moechtest du kaufen? 
02.
echo ======================= 
03.
echo 1) Schokolade (1 Hunger) 
04.
echo 2) Backkartoffel (5 Hunger) 
05.
echo 3) Allyoucaneat (10 Hunger) 
06.
echo Du hast %money% Geld 
07.
set /p choice3= 
08.
 
09.
if "%choice3%"=="1" ( 
10.
 
11.
Hier muss irgendwie die Zeile 1 aus der Datei "price" ausgelsen und in die Variable %price% geschrieben werden.. 
12.
 
13.
if %money% LSS %price% goto fail 
14.
set /a money=%money% - %price% 
15.
ping -n 2 127.0.0.1 > NUL 
16.
echo Kauf erfogreich 
17.
goto shop 
18.
)
Wenn jemand eine Lösung für das Problem hat, so wie ich es mir gedacht habe oder anders (solang es funktioniert ist mir egal WIE es gelöst wird ^^ ) wäre ich demjenigen sehr dankbar

Vielen Dank schonmal jetzt.
MfG Budders
Mitglied: rubberman
20.04.2013 um 11:43 Uhr
Hallo Budders, willkommen im Forum.

Mal was zum Testen. In price.txt befinden sich die Zeilen
10
Der Batchcode:
01.
@echo off &setlocal 
02.
set /a "money=8" 
03.
 
04.
echo Was moechtest du kaufen? 
05.
echo ======================= 
06.
echo 1) Schokolade (1 Hunger) 
07.
echo 2) Backkartoffel (5 Hunger) 
08.
echo 3) Allyoucaneat (10 Hunger) 
09.
echo Du hast %money% Geld 
10.
set /p choice3= 
11.
 
12.
call :getPrice "price.txt" "%choice3%" price 
13.
 
14.
if %money% LSS %price% ( 
15.
  call :fail 
16.
) else ( 
17.
  set /a money-=%price% 
18.
  ping -n 2 127.0.0.1 > NUL 
19.
  echo Kauf erfogreich 
20.
  call :shop 
21.
22.
pause 
23.
exit /b 
24.
:: Ende des Hauptcodes. 
25.
 
26.
 
27.
:: Hole Preis 
28.
:getPrice FileName Line VarName 
29.
<"%~1" (for /l %%i in (1 1 %~2) do set /p "%~3=") 
30.
exit /b 
31.
 
32.
:: Bei Fehler 
33.
:fail 
34.
echo Du hast nicht genug Geld. 
35.
echo Was weiter passieren soll weiss ich nicht. 
36.
exit /b 
37.
 
38.
:: Shop 
39.
:shop 
40.
echo Du hast %money% Geld. 
41.
echo Was weiter passieren soll weiss ich nicht. 
42.
exit /b
Versuche mal ohne GOTOs auszukommen. Damit bekommst du Spaghetticode, bei dem du irgendwann selbst nicht mehr weißt, wohin überall gesprungen wird. Versuche es mit CALL :Label, mit EXIT /B kehrst du an die Stelle zurück, an dem der Aufruf stattgefunden hat.
GOTO ist nur was für Schleifen, die mit FOR nicht abzubilden sind.

Grüße
rubberman
Bitte warten ..
Mitglied: Budders
20.04.2013 um 12:00 Uhr
Ich bin beeindruckt. :o
vielen Dank für die Hilfe, es funktioniert super!
Und danke für den Tipp mit CALL und EXIT /B!
Ich habe nie was anderes gelernt bzw. mir was anderes beigebracht, da ich bis heute immer gut damit zurecht gekommen bin, aber man lernt ja nie aus

Danke und einen schönen Samstag wünsche ich.
Bitte warten ..
Mitglied: rubberman
20.04.2013 um 12:05 Uhr
Hallo Budders,

gern geschehen

Du bist nicht der einzige, der mit Hunderten GOTOs in Batch arbeitet. Das ist einer der Gründe warum Batch in Verruf gekommen ist. Man wird regelrecht verleitet Spaghetticode zu schreiben. Aus vielen anderen Sprachen wurde GOTO rigoros verbannt. Wenn du also mal vorhast eine andere Sprache zu lernen, wirst du es sehr schwer haben Lösungen zu finden, die ohne GOTO auskommen. Also am besten gar nicht erst angewöhnen

Grüße und ebenfalls ein schönes WE
rubberman
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen (9)

Frage von Frensche zum Thema Batch & Shell ...

Installation
gelöst Mit Powershell in einer Datei eine Zeile auslesen (6)

Frage von Bommi1961 zum Thema Installation ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
Exchange Server
Microsoft Exchange Weiterleitung mit anderer primären E-Mail Adresse (14)

Frage von Rene12345 zum Thema Exchange Server ...

Windows Userverwaltung
gelöst Wie verfahrt Ihr mit den Windows-Benutzerkonten und -dateien von ausgeschiedenen Mitarbeitern? (14)

Frage von Bl0ckS1z3 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Devolo DLAN 500 pro Wireless+ (13)

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

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...