Als was list Batch die 10? (Und gegebenenfalls alle zaheln mit nullen)
Guten Morgen
Habe da ein kleines Problem mit Zahlen auswerten.
Habe mir einen kleinen Script geschrieben, der eine Zufallszahl zwischen 1 und 10 generiert (soll später Variable sein, zwischen welchen werten)
Zahlen von 1-9 funktionieren.
Nur die 10 Tanzt aus der reihe.
Sagen wir, als gesuchte zahl ist 1.
Gebe ich 2 ein kommt die Ausgabe die gesuchte zahl ist kleiner.
Was ja stimmt.
Gebe ich 10 ein, gesuchte Zahl ist größer
Umgekehrt genauso.
gesuchte zahl ist 10
gebe ich 2-9 ein gesuchte Zahl ist kleiner.
Bei 1 gesuchte zahl ist größer
Als was wird die 10 interpretiert?
Hier der Code:
Schonmal vielen Dank im Voraus
Mfg
Power-Poler
Habe da ein kleines Problem mit Zahlen auswerten.
Habe mir einen kleinen Script geschrieben, der eine Zufallszahl zwischen 1 und 10 generiert (soll später Variable sein, zwischen welchen werten)
Zahlen von 1-9 funktionieren.
Nur die 10 Tanzt aus der reihe.
Sagen wir, als gesuchte zahl ist 1.
Gebe ich 2 ein kommt die Ausgabe die gesuchte zahl ist kleiner.
Was ja stimmt.
Gebe ich 10 ein, gesuchte Zahl ist größer
Umgekehrt genauso.
gesuchte zahl ist 10
gebe ich 2-9 ein gesuchte Zahl ist kleiner.
Bei 1 gesuchte zahl ist größer
Als was wird die 10 interpretiert?
Hier der Code:
@echo off & setlocal
set Richtig=0
set Falsch=0
:Test
SET MIN=1
SET MAX=10
SET /a Zufall=MIN+(MAX-MIN+1)*%random%/32768
echo Ratte eine Zahl zwischen 1 und 10
echo %Zufall%
:Neu
set Eingabe=
set /p "Eingabe= "
if %Eingabe% geq %MIN% if %Eingabe% leq %MAX% goto :LOL
echo Falsche Eingabe
echo normal
sleep.exe 1
set /a Falsch=%Falsch%+1
::cls
goto :Neu
:LOL
if "%Eingabe%" lss "%Zufall%" goto :Groesser
if "%Eingabe%" gtr "%Zufall%" goto :Kleiner
if "%Eingabe%" equ "%Zufall%" goto :Richtig
::if "%Eingabe%" equ "Ergebnis" goto :Ergebnis
:Richtig
echo Richtig die Zahl ist %Zufall%
echo normal
sleep.exe 1
set /a Richtig=%Richtig%+1
::cls
goto :Test
:Ergebnis
echo Richtig: %Richtig%
echo Falsch: %Falsch%
sleep.exe 3
::cls
goto :Test
:Kleiner
echo Die gesuchte Zahl ist kleiner
goto :Neu
:Groesser
echo Die gesuchte Zahl ist groesser
goto :Neu
Schonmal vielen Dank im Voraus
Mfg
Power-Poler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159240
Url: https://administrator.de/forum/als-was-list-batch-die-10-und-gegebenenfalls-alle-zaheln-mit-nullen-159240.html
Ausgedruckt am: 21.02.2025 um 13:02 Uhr
11 Kommentare
Neuester Kommentar

Hallo Power-Poler!
Versuchs mal mit:
Option /a steht für numerischen Ausdruck
Gruß Dieter
Versuchs mal mit:
Set /a Min=1
Set /a Max=10
Gruß Dieter
Hallo Power-Poler!
Du solltest Dich nicht beschweren, vom CMD-Interpreter ernstgenommen zu werden
: Wenn Du einen alphanumerischen Vergleich (Zeilen 23 bis 25) verlangst, wird der natürlich auch durchgeführt - daher einfach die Anführungszeichen entfernen ...
Noch zwei Anmerkungen zu den Berechnungen:
Ich bevorzuge beim Zählen die abgekürzte Schreibweise (funktioniert nämlich auch innerhalb einer Schleife ohne "delayedExpansion")
und eine Zufallszahl im Bereich 1 bis 10 lässt sich (im Batch, ansonsten nur ein einzelnes Prozentzeichen für die Modulo-Operation) einfacher mit
erzeugen ...
Grüße
bastla
P.S.: Du scheinst von den Anwendern Deines Batches keine sonderlich hohe Meinung zu haben
:
(Und eigentlich fehlen da auch die Satzzeichen "," und "!")
Du solltest Dich nicht beschweren, vom CMD-Interpreter ernstgenommen zu werden
Noch zwei Anmerkungen zu den Berechnungen:
Ich bevorzuge beim Zählen die abgekürzte Schreibweise (funktioniert nämlich auch innerhalb einer Schleife ohne "delayedExpansion")
set /a Falsch+=1
set /a Zufall=%random% %% 10 + 1
Grüße
bastla
P.S.: Du scheinst von den Anwendern Deines Batches keine sonderlich hohe Meinung zu haben
echo Ratte eine Zahl zwischen 1 und 10
@Power-Poler
"10" ist nunmal kleiner als "2", da ja bei einem Textvergleich zeichenweise vorgegangen wird ...
Ratte, eine Zahl zwischen 1 und 10!
0
Grüße
bastla
Wo besteht für den Interpreten den der unterschied zwischen 10 und "10" ??
Na ja, Zahl vs Text?"10" ist nunmal kleiner als "2", da ja bei einem Textvergleich zeichenweise vorgegangen wird ...
Das andere, echo Ratte eine Zahl zwischen 1 und 10; bin noch nicht fertig, und warum ein !?
Meintest Du denn nicht:Ratte, eine Zahl zwischen 1 und 10!
0
Grüße
bastla
[OT]
Bei Userinnen schreibt er ja vielleicht
Mäuschen, eine Zahl zwischen 1 und 10!
[/OT]
Bei Userinnen schreibt er ja vielleicht
Mäuschen, eine Zahl zwischen 1 und 10!
[/OT]
moin Power-Poler,
direkt nach der Zeile 12:
kannst Du nochdiverse eine bessere Prüfung Einbauen
somit kannst Du auch Gefahrlos die (Überflüssigen) doppelten Hochkommata in den VergleichsZeilen weglassen
Zeile 18 und 32
Gruß Phil
direkt nach der Zeile 12:
set /p "Eingabe= "
kannst Du noch
(
set /a "Eingabe=%eingabe%"
) 2>nul || set "Eingabe=0"
somit kannst Du auch Gefahrlos die (Überflüssigen) doppelten Hochkommata in den VergleichsZeilen weglassen
Zeile 18 und 32
set /a Falsch=%Falsch%+1
kannst Du aus so schreibenset /a Falsch+=1
Gruß Phil
moin Power-Poler,
es wird alles andere Eingegebene ausser Ziffern selbst als Variable aufgelöst. wenn die Variable nicht definiert ist wird sie auch nicht gesetzt. Also der Wert 0 wird eingetragen.
wenn Du zufall eingibst wird die Variable zufall als Zahl gesetzt.
die VergleichsZeilen (das was bastla schon erwähnt hat)
wird immer ein Vergleich auf der Basis von Zeichenfolgen vonstatten gehen:
das entsprich genau der Sortierung nach dem Alphabet, so wie die Reihenfolge der Wörter im Duden oder bei der Ausgabe vom Befehl DIR (ohne sortierung) ist.
Zahlen werden so hier Sortiert wie das Beispiel für die CMD Line:
da siehst Du auch gleich, dass ein Zeichenvergleich ganz anders die ZahlenReihenfolge hat.
schreib daher Reine Zahlenvergeleiche mit Variablen ohne Umschlossene Doppelte Hochkommata
Gruß Phil
es wird alles andere Eingegebene ausser Ziffern selbst als Variable aufgelöst. wenn die Variable nicht definiert ist wird sie auch nicht gesetzt. Also der Wert 0 wird eingetragen.
die VergleichsZeilen (das was bastla schon erwähnt hat)
if "%Eingabe%" lss "%Zufall%" goto :Groesser
if "%Eingabe%" gtr "%Zufall%" goto :Kleiner
if "%Eingabe%" equ "%Zufall%" goto :Richtig
if "%Eingabe%" equ "Ergebnis" goto :Ergebnis
if "aa" lss "ab" echo ja
Zahlen werden so hier Sortiert wie das Beispiel für die CMD Line:
(for %i in (2 4 6 8 10 11 1 3 5 20 100 22) do @echo %i)|sort
1
10
100
11
2
20
22
3
4
5
6
8
schreib daher Reine Zahlenvergeleiche mit Variablen ohne Umschlossene Doppelte Hochkommata
if %Variable% geq 1 echo Variable ist größer als 1
Gruß Phil
Moin pieh-ejsdch,
meinst du nicht, du hättest wenigstens einen Teil der kurzen Fragen ähnlich kurz&knackig abfackeln können?
Anführungszeichen.
So zum Beispiel... *gg
Grüße
Biber
meinst du nicht, du hättest wenigstens einen Teil der kurzen Fragen ähnlich kurz&knackig abfackeln können?
Anführungszeichen.
So zum Beispiel... *gg
Grüße
Biber