(Batch) Einzelne Zeile auslesen?
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.
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
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.
echo Was moechtest du kaufen?
echo =======================
echo 1) Schokolade (1 Hunger)
echo 2) Backkartoffel (5 Hunger)
echo 3) Allyoucaneat (10 Hunger)
echo Du hast %money% Geld
set /p choice3=
if "%choice3%"=="1" (
Hier muss irgendwie die Zeile 1 aus der Datei "price" ausgelsen und in die Variable %price% geschrieben werden..
if %money% LSS %price% goto fail
set /a money=%money% - %price%
ping -n 2 127.0.0.1 > NUL
echo Kauf erfogreich
goto shop
)
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205327
Url: https://administrator.de/contentid/205327
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Budders, willkommen im Forum.
Mal was zum Testen. In price.txt befinden sich die Zeilen
Der Batchcode:
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
GOTO ist nur was für Schleifen, die mit FOR nicht abzubilden sind.
Grüße
rubberman
Mal was zum Testen. In price.txt befinden sich die Zeilen
4
8
10
Der Batchcode:
@echo off &setlocal
set /a "money=8"
echo Was moechtest du kaufen?
echo =======================
echo 1) Schokolade (1 Hunger)
echo 2) Backkartoffel (5 Hunger)
echo 3) Allyoucaneat (10 Hunger)
echo Du hast %money% Geld
set /p choice3=
call :getPrice "price.txt" "%choice3%" price
if %money% LSS %price% (
call :fail
) else (
set /a money-=%price%
ping -n 2 127.0.0.1 > NUL
echo Kauf erfogreich
call :shop
)
pause
exit /b
:: Ende des Hauptcodes.
:: Hole Preis
:getPrice FileName Line VarName
<"%~1" (for /l %%i in (1 1 %~2) do set /p "%~3=")
exit /b
:: Bei Fehler
:fail
echo Du hast nicht genug Geld.
echo Was weiter passieren soll weiss ich nicht.
exit /b
:: Shop
:shop
echo Du hast %money% Geld.
echo Was weiter passieren soll weiss ich nicht.
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
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
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