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

Als was list Batch die 10? (Und gegebenenfalls alle zaheln mit nullen)

Frage Entwicklung Batch & Shell

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

23.01.2011 um 11:13 Uhr, 4605 Aufrufe, 11 Kommentare

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:

01.
@echo off & setlocal 
02.
set Richtig=0 
03.
set Falsch=0 
04.
:Test 
05.
SET MIN=1 
06.
SET MAX=10 
07.
SET /a Zufall=MIN+(MAX-MIN+1)*%random%/32768  
08.
echo Ratte eine Zahl zwischen 1 und 10 
09.
echo %Zufall% 
10.
:Neu 
11.
set Eingabe= 
12.
set /p "Eingabe= "  
13.
if %Eingabe% geq %MIN% if %Eingabe% leq %MAX% goto :LOL 
14.
 
15.
echo Falsche Eingabe 
16.
echo normal 
17.
sleep.exe 1 
18.
set /a Falsch=%Falsch%+1 
19.
::cls 
20.
goto :Neu 
21.
 
22.
:LOL 
23.
if "%Eingabe%" lss "%Zufall%" goto :Groesser 
24.
if "%Eingabe%" gtr "%Zufall%" goto :Kleiner 
25.
if "%Eingabe%" equ "%Zufall%" goto :Richtig 
26.
::if "%Eingabe%" equ "Ergebnis" goto :Ergebnis 
27.
 
28.
:Richtig 
29.
echo Richtig die Zahl ist %Zufall% 
30.
echo normal 
31.
sleep.exe 1 
32.
set /a Richtig=%Richtig%+1 
33.
::cls 
34.
goto :Test 
35.
 
36.
:Ergebnis 
37.
echo Richtig: %Richtig% 
38.
echo Falsch: %Falsch% 
39.
sleep.exe 3 
40.
::cls 
41.
goto :Test 
42.
 
43.
:Kleiner 
44.
echo Die gesuchte Zahl ist kleiner 
45.
goto :Neu 
46.
 
47.
:Groesser 
48.
echo Die gesuchte Zahl ist groesser 
49.
goto :Neu
Schonmal vielen Dank im Voraus
Mit freundlichen Grüßen
Power-Poler
Mitglied: 76109
23.01.2011 um 12:29 Uhr
Hallo Power-Poler!

Versuchs mal mit:
01.
Set /a Min=1 
02.
Set /a Max=10
Option /a steht für numerischen Ausdruck

Gruß Dieter
Bitte warten ..
Mitglied: Power-Poler
23.01.2011 um 13:06 Uhr
Hat leider nichts gebracht.
Danke f´ür deine Antwort
Bitte warten ..
Mitglied: bastla
23.01.2011 um 13:47 Uhr
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")
set /a Falsch+=1
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
set /a Zufall=%random% %% 10 + 1
erzeugen ...

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
(Und eigentlich fehlen da auch die Satzzeichen "," und "!")
Bitte warten ..
Mitglied: Power-Poler
23.01.2011 um 13:59 Uhr
Ok, danke das war es wohl.
Wo besteht für den Interpreten den der unterschied zwischen 10 und "10" ??
Das andere, echo Ratte eine Zahl zwischen 1 und 10; bin noch nicht fertig, und warum ein !?
Bitte warten ..
Mitglied: bastla
23.01.2011 um 14:04 Uhr
@Power-Poler
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
Bitte warten ..
Mitglied: Biber
23.01.2011 um 18:59 Uhr
[OT]
Zitat von bastla:
Ratte, eine Zahl zwischen 1 und 10!
0
Bei Userinnen schreibt er ja vielleicht
Mäuschen, eine Zahl zwischen 1 und 10!
[/OT]
Bitte warten ..
Mitglied: Power-Poler
23.01.2011 um 19:11 Uhr
hmpf
Werde das natürlich noch ändern

*Irgendwie fehlt mir hier der SchmolSmiley*
Bitte warten ..
Mitglied: pieh-ejdsch
24.01.2011 um 00:44 Uhr
moin Power-Poler,

direkt nach der Zeile 12:
set /p "Eingabe= "
kannst Du noch diverse eine bessere Prüfung Einbauen
01.
02.
set /a "Eingabe=%eingabe%" 
03.
) 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 schreiben
set /a Falsch+=1
Gruß Phil
Bitte warten ..
Mitglied: Power-Poler
24.01.2011 um 18:50 Uhr
OK Danke, wusste nicht das ich Variablen auch so Hoch Zählen lassen kann.

Was überprüft den Zeile 1-3 ?
Was meinst du mit "doppelten Hochkommata" ?
Auf Welche Zeile beziehst du dich hier
Bitte warten ..
Mitglied: pieh-ejdsch
24.01.2011 um 20:19 Uhr
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 "a b" eingibst würde(n) ein/mehr Operand(en) zum Berechnen fehlen. Daher das ganze in einer Klammer und der Abschluss mit 2>nul || set "Eingabe=0", damit der Fehler erkannt wird und die Variable auf 0 gesetzt wird.
wenn Du zufall eingibst wird die Variable zufall als Zahl gesetzt.

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
wird immer ein Vergleich auf der Basis von Zeichenfolgen vonstatten gehen:
if "aa" lss "ab" echo ja
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:
(for %i in (2 4 6 8 10 11 1 3 5 20 100 22) do @echo %i)|sort 
10 
100 
11 
20 
22 
8
da siehst Du auch gleich, dass ein Zeichenvergleich ganz anders die ZahlenReihenfolge hat.

schreib daher Reine Zahlenvergeleiche mit Variablen ohne Umschlossene Doppelte Hochkommata
if %Variable% geq 1 echo Variable ist größer als 1
Gruß Phil
Bitte warten ..
Mitglied: Biber
24.01.2011 um 20:54 Uhr
Moin pieh-ejsdch,

meinst du nicht, du hättest wenigstens einen Teil der kurzen Fragen ähnlich kurz&knackig abfackeln können?
Zitat von Power-Poler:
Was meinst du mit "doppelten Hochkommata" ?
Anführungszeichen.

So zum Beispiel... *gg

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst TODO List in ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Windows 10
gelöst Windows 10 Privatsphäre (3)

Frage von Patrick-IT zum Thema Windows 10 ...

Erkennung und -Abwehr
Lokale Virenprüfstation : Windows 10: Ändern von Einstellungen verhinden (5)

Frage von TryAndSolve zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...