Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3310 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 ...

Microsoft Office
gelöst Excel: Einzelne Zeilen einer mehrzeiligen Zelle auslesen (3)

Frage von Booster07 zum Thema Microsoft Office ...

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

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Komplette Zeile aus Textdatei auslesen (3)

Frage von tegwert zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...