Unterscheiden von Zahlen und Buchstaben im Batch-Script
Hallo zusammen
Also ich habe mich auch daran versucht ein Script zu basteln was zwischen Zahlen und Buchstaben unterscheidet. Nur leider klappt das nicht so ganz. Also das Script funktioniert in der Ausführung aber es schreibt halt nicht die gewünschte Antwort hin.
Villeicht könnt ihr ja mal drüber schauen
@echo off
echo Bitte geben sie etwas ein:
set /p var=
set /a "var2=%var%+5"
if %var2% == "5" ( echo Buchstaben) else ( echo Zahl)
pause
Wenn ich dann dort ein Wort eingebe kommt als Antwort dann Zahl was aber ja eig nicht so ist, weil dann dort das Ergebnis 5 rauskommen müsste.
schon mal Danke im vorraus.
Also ich habe mich auch daran versucht ein Script zu basteln was zwischen Zahlen und Buchstaben unterscheidet. Nur leider klappt das nicht so ganz. Also das Script funktioniert in der Ausführung aber es schreibt halt nicht die gewünschte Antwort hin.
Villeicht könnt ihr ja mal drüber schauen
@echo off
echo Bitte geben sie etwas ein:
set /p var=
set /a "var2=%var%+5"
if %var2% == "5" ( echo Buchstaben) else ( echo Zahl)
pause
Wenn ich dann dort ein Wort eingebe kommt als Antwort dann Zahl was aber ja eig nicht so ist, weil dann dort das Ergebnis 5 rauskommen müsste.
schon mal Danke im vorraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141039
Url: https://administrator.de/forum/unterscheiden-von-zahlen-und-buchstaben-im-batch-script-141039.html
Ausgedruckt am: 24.12.2024 um 01:12 Uhr
11 Kommentare
Neuester Kommentar
Eine sehr interessante Art, das zu überprüfen Wenn du diesen Quelltext behalten willst dann lasse bei der 5 die Anführungszeichen weg.
ja am Anfang steht if damit auch eine 0 eingegeben werden kann. Danach ist das eigentlich das selbe was du schon hattest nur das miniversum keine 5 - wie du - sondern eine 0 benutzt hat. Wie du siehst hat auch er keine Anführungszeichen bei der 0 deshalb kann ich mir nicht vorstellen, dass mein Vorschlag nicht funktioniert hat.
Ist das selbe
@echo off
echo Bitte geben sie etwas ein:
set /p var=
set /a "var2=%var%+5"
if %var == 5 (echo Zahl) else (if %var2% == "5" ( echo Buchstaben) else ( echo Zahl))
pause
Ist das selbe
Hallo @all!
Spätestens wenn auch noch Anführungszeichen ins Spiel kommen, wird es (für Nicht-Biber ) so gut wie unmöglich, eine Eingabe in Batch abzusichern - trotzdem noch ein Ansatz:
Grüße
bastla
Spätestens wenn auch noch Anführungszeichen ins Spiel kommen, wird es (für Nicht-Biber ) so gut wie unmöglich, eine Eingabe in Batch abzusichern - trotzdem noch ein Ansatz:
@echo off & setlocal
echo Bitte geben sie etwas ein:
set /p var=
if not defined var echo Leere Eingaben werden nicht ausgewertet! & goto :eof
set "Text="
set /a Pos=0
:Loop
call set "Zeichen=%%var:~%Pos%,1%%"
if "%Zeichen%"=="" goto :Done
echo 0123456789|findstr /l /c:"%Zeichen%">nul||set "Text=True"
set /a Pos+=1
if not defined Text goto :Loop
:Done
if defined Text (echo Buchstaben) else (echo Zahl)
bastla
Na ja, bastla,
so einfach ist das nicht, die offenen Flanken der CMD.exe abzusichern...
Dieses Stück Software haben doch die RedmonderInnen zusammengeschrotet.
Und was die alles verscharchen können, da kommen nur ganz Einfühlsame drauf.
Beispiel mit Kölnisch Wasser
Denen reicht es völlig, wenn eine Variable mit einer Ziffer anfängt, dann ist es doch logischerweise eine Zahl, oder?
Ich weiss nicht, ob die in Redmond auch so einen schiefen Turm haben wie in PISA....
Aber dagegen wetten würde ich auch nicht.
Grüße
Biber
so einfach ist das nicht, die offenen Flanken der CMD.exe abzusichern...
Dieses Stück Software haben doch die RedmonderInnen zusammengeschrotet.
Und was die alles verscharchen können, da kommen nur ganz Einfühlsame drauf.
Beispiel mit Kölnisch Wasser
>set z1=4711odekolonnje
(=20:13:59 D:\temp=)
>set /a z1+9
4720
Denen reicht es völlig, wenn eine Variable mit einer Ziffer anfängt, dann ist es doch logischerweise eine Zahl, oder?
Ich weiss nicht, ob die in Redmond auch so einen schiefen Turm haben wie in PISA....
Aber dagegen wetten würde ich auch nicht.
Grüße
Biber
@Biber
Sieht zumindest schön flüssig aus - was sich aber, wie auch in miniversums Batch, radikal ändert, wenn man/frau/kind die (in diesem Fall allerdings bekannter Maßen unnötigen) Prozentzeichen für die Variablenschreibweise verwendet:
Grüße
bastla
Sieht zumindest schön flüssig aus - was sich aber, wie auch in miniversums Batch, radikal ändert, wenn man/frau/kind die (in diesem Fall allerdings bekannter Maßen unnötigen) Prozentzeichen für die Variablenschreibweise verwendet:
D:\TEMP>set z1=4711odekolonnje
D:\TEMP>set /a %z1%+9
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
bastla
@bastla
Dann wiederum hat die mitgelieferte Hilfe zu Set (Set /?) den Wahrheitsgehalt von Kohl'schen Memoiren:
Dort steht u.a.
Und ich sehe am Ende des Satzes "Somit können Sie mit Umgebungsvariablen Berechnungen vornehmen, ohne %-Zeichen einzugeben, um deren Werte zu erhalten." beim besten Willen kein "außer wenn" oder "allerdings" oder "Angaben ohne Gewähr".
Aber was soll's.... wahrscheinlich ist in Redmond die Auswahl an möglichen PraktikantInnen nicht so gewaltig...
Grüße
Biber
Dann wiederum hat die mitgelieferte Hilfe zu Set (Set /?) den Wahrheitsgehalt von Kohl'schen Memoiren:
Dort steht u.a.
> Set /?
...
nicht-nummerischen Zeichenfolgen im Ausdruck werden als Zeichenfolgen von
Umgebungsvariablen behandelt, deren Werte vor der Verwendung in Zahlen
konvertiert werden. Wenn eine Umgebungsvariable angegeben wird, die nicht
definiert ist, wird für diese der Wert Null verwendet. Somit können Sie
mit Umgebungsvariablen Berechnungen vornehmen, ohne %-Zeichen einzugeben,
um deren Werte zu erhalten. Wenn der Befehl SET /A von der Befehlszeile,
d.h. außerhalb eines Befehlsskripts ausgeführt wird, dann zeigt er
den endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erfordert
Und ich sehe am Ende des Satzes "Somit können Sie mit Umgebungsvariablen Berechnungen vornehmen, ohne %-Zeichen einzugeben, um deren Werte zu erhalten." beim besten Willen kein "außer wenn" oder "allerdings" oder "Angaben ohne Gewähr".
Aber was soll's.... wahrscheinlich ist in Redmond die Auswahl an möglichen PraktikantInnen nicht so gewaltig...
Grüße
Biber