Den größten mehrerer Werte herausfinden - Batch
Hi Leute ;)
nach ewigen Zeiten habe ich mal wieder eine Frage an meine Meister des Batch =)
Gibt es eine Möglichkeit in Batch, aus mehreren Werten den kleinsten Wert herauszufinden? und das Ergebnis dann in eine Variable zu speichern? Evtl mit for?
Erklärung folgt auf dem Fuße:
Grundsätzlich sei gesagt, das das Batch funktioniert!! Ich denke auch nicht, dass ich jemals mit dieser Version Probleme haben werde. Aber ich hab immer gern alles möglichkeiten abgedeckt.
Das Ziel des obigen Scripts (welches nur ein Auszug ist, im ersten Kommentar poste ich das gesamte Script - der Auszug steht dann für die Zeilen 108-149) soll sein, unter den verschiedenen %W00X%-Variablen den größten Wert herauszufinden.
Das Problem, das ich mit der oberigen Version sehe ist, dass wenn z.B. W002 größer ist als W003, dann bricht das File die suche nach dem kleinsten Wert zu früh ab.
Hintergrund ist folgender (ich muss dazu leider ein klein wenig ausholen):
Sinn des gesamten Batch-Files ist nun, aus der Wertigkeit der Gebäude (also Ertrag im Verhältnis zu den Kosten) das "effektivste" Gebäude herauszufinden und dann bei einem bestimmten Kontostand auszurechnen, wie viele Gebäude ich von welchem Typ kaufen kann bis mein Gold nicht mehr für das effektivste Gebäude reicht.
Ich hoffe dass es soweit verständlich ist. Wie schon gesagt poste ich das gesamte Script für Interessierte im ersten Kommentar. ;)
Der obige Auszug enthält nun den Bereich, der für das Vergleichen der Effektivität/Wertigkeit (daher auch %W00X%) zuständig ist. (Allerdings nur für 4 Gebäude, es sind in in meinem jetztigen File 11 Gebäude, siehe erster Kommentar)
Mein Problem ist nun: Ich bin mir nicht sicher, ob das in allen Fällen so funktioniert. (also undabhängig davon, wie viele Gebäude ich von der jeweiligen Nummer schon habe.)
Gibt es eine Möglichkeit in Batch, aus mehreren Werten den kleinsten Wert herauszufinden? und das Ergebnis dann in eine Variable zu speichern? Evtl mit for?
Falls weitere Fragen auftauchen, nur zu =)
Ich hoffe ich habe nichts vergessen.. und vielen Dank schon mal für jeden, der sich in diese (vielleicht ein bisschen komplizierte) Spielerei eindenkt ;)
Fame.Styler
PS.: Noch eine kurze Erklärung zu den Variablen:
PPS.: Ich speichere meine Gebäudezahl in einer MonsterWarlordGebaude.txt (Name des Spiels) als zahlenreihe aka 10.5.3.1 (<- 10 vom ersten, 5 vom zweiten etc.), sodass ich sie der Einfachheit halber in der Batch auslesen kann, falls ich nichts gekauft habe, ohne es in der Batch vorher berechnet zu haben.
PPPS.: Da ich mit der Batch oft Berechnungen teste, habe ich am Schluss die Frage nach dem Test (in dem fall wird nichts in dem Textfile verändert) und nach einem erneuten Starten der Batch gehängt ;)
nach ewigen Zeiten habe ich mal wieder eine Frage an meine Meister des Batch =)
Gibt es eine Möglichkeit in Batch, aus mehreren Werten den kleinsten Wert herauszufinden? und das Ergebnis dann in eine Variable zu speichern? Evtl mit for?
Erklärung folgt auf dem Fuße:
If %W002% GTR %W001% (
set CNT=01
goto :OK)
If %W003% GTR %W002% (
set CNT=02
goto :OK)
If %W004% GTR %W003% (
set CNT=03
goto :OK)
etc.
Grundsätzlich sei gesagt, das das Batch funktioniert!! Ich denke auch nicht, dass ich jemals mit dieser Version Probleme haben werde. Aber ich hab immer gern alles möglichkeiten abgedeckt.
Das Ziel des obigen Scripts (welches nur ein Auszug ist, im ersten Kommentar poste ich das gesamte Script - der Auszug steht dann für die Zeilen 108-149) soll sein, unter den verschiedenen %W00X%-Variablen den größten Wert herauszufinden.
Das Problem, das ich mit der oberigen Version sehe ist, dass wenn z.B. W002 größer ist als W003, dann bricht das File die suche nach dem kleinsten Wert zu früh ab.
Hintergrund ist folgender (ich muss dazu leider ein klein wenig ausholen):
- Es geht um ein Spiel.
- Die relevanten Faktoren in dem Spiel sind
- dein Konto (z.B. ein Guthaben von 1000 Goldmünzen), und
- kaufbare Gebäude. Gebäude bringen ein stündliches Income. z.B. Gebäude 1 kostet 100 Goldmünzen und bringt ein Income von 1 Goldmünze pro Stunde.
- Man kann ein Gebäude mehrmals kaufen, jedoch kostet es mit jedem Kauf 1/10 vom Startpreis mehr, also 1=100g, 2=110g, 3=120g usw.
- Mit steigendem Level stehen mehr Gebäude zur Verfügung, die jedoch im Verhältnis mehr kosten als sie bringen (z.B. Gebäude 2 kostet 210g und bringt "nur" 2 Goldmünzen)
Sinn des gesamten Batch-Files ist nun, aus der Wertigkeit der Gebäude (also Ertrag im Verhältnis zu den Kosten) das "effektivste" Gebäude herauszufinden und dann bei einem bestimmten Kontostand auszurechnen, wie viele Gebäude ich von welchem Typ kaufen kann bis mein Gold nicht mehr für das effektivste Gebäude reicht.
Ich hoffe dass es soweit verständlich ist. Wie schon gesagt poste ich das gesamte Script für Interessierte im ersten Kommentar. ;)
Der obige Auszug enthält nun den Bereich, der für das Vergleichen der Effektivität/Wertigkeit (daher auch %W00X%) zuständig ist. (Allerdings nur für 4 Gebäude, es sind in in meinem jetztigen File 11 Gebäude, siehe erster Kommentar)
Mein Problem ist nun: Ich bin mir nicht sicher, ob das in allen Fällen so funktioniert. (also undabhängig davon, wie viele Gebäude ich von der jeweiligen Nummer schon habe.)
Gibt es eine Möglichkeit in Batch, aus mehreren Werten den kleinsten Wert herauszufinden? und das Ergebnis dann in eine Variable zu speichern? Evtl mit for?
Falls weitere Fragen auftauchen, nur zu =)
Ich hoffe ich habe nichts vergessen.. und vielen Dank schon mal für jeden, der sich in diese (vielleicht ein bisschen komplizierte) Spielerei eindenkt ;)
Fame.Styler
PS.: Noch eine kurze Erklärung zu den Variablen:
- %G% ist das Gold das ich auf dem Konto habe
- %C00X% ist der Counter des jeweiligen Gebäudetyps, also die Anzahl die ich davon bereits besitze
- %B00X% ist der Basispreis der Gebäude (also wenn ich keines besitzten würde)
- %K00X% sind die Kosten des nächst höheren Gebäudes, berechnet aus Counter und Basis ;)
- %I00X% ist das stündliche Income, das mir das Gebäude bringt
- %W00X% ist die Effektivität/Wertigkeit des Gebäudes, berechnet aus Kosten und Income
PPS.: Ich speichere meine Gebäudezahl in einer MonsterWarlordGebaude.txt (Name des Spiels) als zahlenreihe aka 10.5.3.1 (<- 10 vom ersten, 5 vom zweiten etc.), sodass ich sie der Einfachheit halber in der Batch auslesen kann, falls ich nichts gekauft habe, ohne es in der Batch vorher berechnet zu haben.
PPPS.: Da ich mit der Batch oft Berechnungen teste, habe ich am Schluss die Frage nach dem Test (in dem fall wird nichts in dem Textfile verändert) und nach einem erneuten Starten der Batch gehängt ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 224655
Url: https://administrator.de/forum/den-groessten-mehrerer-werte-herausfinden-batch-224655.html
Ausgedruckt am: 22.12.2024 um 03:12 Uhr
5 Kommentare
Neuester Kommentar
Hallo fame.styler!
Grüße
bastla
okay. ('set W0') benutzt einen Befehl. Nur versteh ich nicht recht warum? =)
Einfach mal als Zeile 99 (ohne Apostroph davor und danach) in Deinem Ansatz verwenden, dann siehst Du gleich den Sinn ...delims==" löscht alle Grenzzeichen(?)
Nein; damit wird "=" als Trennzeichen (zwischen Variablenname und Wert der Variablen - siehe die Ausgabe von "set W0
" - daher auch tokens 1-2: %%a und %%b) festgelegt.set /a MAX=%%b, set "CNT=%%a" -> du setzt also das MAX mit dem momentanen Wert,
... wenn der aktuell betrachtete Wert größer als das bisherige Maximum ist ...und als CNT, also als Auswahl, welches Gebäude ich nehmen muss, ist %%a... oder?
Genau genommen ist das zunächst der Variablenname, der am Ende noch um die ersten beiden Stellen ("W0") gekürzt wird.Grüße
bastla