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, 2990 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.
Mit freundlichen Grüßen 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

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

Frage von Bommi1961 zum Thema Installation ...

Batch & Shell
gelöst Mittels Batch jede Zeile einer Textdatei prüfen (4)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...