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

Unterscheiden von Zahlen und Buchstaben im Batch-Script

Frage Entwicklung Batch & Shell

Mitglied: KeViNK92

KeViNK92 (Level 1) - Jetzt verbinden

20.04.2010, aktualisiert 12:52 Uhr, 5977 Aufrufe, 11 Kommentare

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.
Mitglied: miniversum
20.04.2010 um 12:55 Uhr
Versuchs mal so:
01.
@echo off 
02.
echo Bitte geben sie etwas ein: 
03.
set /p var= 
04.
set /a var2=%var%+0 
05.
 
06.
if %var% == 0 ( echo Zahl) else (if %var2% == 0 ( echo Buchstaben) else ( echo Zahl))
Bitte warten ..
Mitglied: MisterExpulso
20.04.2010 um 12:58 Uhr
Eine sehr interessante Art, das zu überprüfen Wenn du diesen Quelltext behalten willst dann lasse bei der 5 die Anführungszeichen weg.
Bitte warten ..
Mitglied: KeViNK92
20.04.2010 um 13:10 Uhr
das ist jetzt ein bisschen verwirrend für mich hast du den anfang bei if genommen, damit das ergebnis 0 auch rauskommen kann? oder warum hat mein if nicht funktioniert? Habe das mit der 5 ohne " " getestet, hat aber auch nicht funktioniert. Miniversum bei dir hats geklappt mit der hilfe, möchte bloß halt gerne eine kurze Erläuterung dazu.
Bitte warten ..
Mitglied: MisterExpulso
20.04.2010 um 13:38 Uhr
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.

01.
@echo off 
02.
echo Bitte geben sie etwas ein: 
03.
set /p var= 
04.
set /a "var2=%var%+5" 
05.
 
06.
if %var == 5 (echo Zahl) else (if %var2% == "5" ( echo Buchstaben) else ( echo Zahl)) 
07.
 
08.
pause
Ist das selbe
Bitte warten ..
Mitglied: KeViNK92
20.04.2010 um 16:13 Uhr
ok vielen Dank ^^ Also war ja mein eigener Lösungsansatz gar nicht mal so falsch. Das beruhigt mich schon mal.

Jedenfalls funktioniert das jetzt super
Bitte warten ..
Mitglied: bastla
20.04.2010 um 16:55 Uhr
Jedenfalls funktioniert das jetzt super
... zumindest, bis sich jemand den Spaß erlaubt, zB "09" oder "0A" (jeweils mit Null als erster Stelle) einzugeben ...

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
20.04.2010 um 18:38 Uhr
Was mir grade auffällt, du kannst es auch darauf vereinfachen:
01.
@echo off 
02.
echo Bitte geben sie etwas ein: 
03.
set /p var= 
04.
set /a var2=%var%+0 
05.
if %var2% == %var% ( echo Zahl) else ( echo Buchstaben)
Bitte warten ..
Mitglied: bastla
20.04.2010 um 19:08 Uhr
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:
01.
@echo off & setlocal 
02.
echo Bitte geben sie etwas ein: 
03.
set /p var= 
04.
if not defined var echo Leere Eingaben werden nicht ausgewertet! & goto :eof 
05.
 
06.
set "Text=" 
07.
set /a Pos=0 
08.
:Loop 
09.
call set "Zeichen=%%var:~%Pos%,1%%" 
10.
if "%Zeichen%"=="" goto :Done 
11.
echo 0123456789|findstr /l /c:"%Zeichen%">nul||set "Text=True" 
12.
set /a Pos+=1 
13.
if not defined Text goto :Loop 
14.
:Done 
15.
if defined Text (echo Buchstaben) else (echo Zahl)
Grüße
bastla
Bitte warten ..
Mitglied: Biber
20.04.2010 um 20:20 Uhr
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

01.
>set z1=4711odekolonnje 
02.
 
03.
(=20:13:59  D:\temp=) 
04.
>set /a z1+9 
05.
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
Bitte warten ..
Mitglied: bastla
20.04.2010 um 21:55 Uhr
@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:
01.
D:\TEMP>set z1=4711odekolonnje 
02.
 
03.
D:\TEMP>set /a %z1%+9 
04.
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17), 
05.
hexadezimale (0x11) oder oktale (021) Zahlen.
Grüße
bastla
Bitte warten ..
Mitglied: Biber
20.04.2010 um 22:10 Uhr
@bastla

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
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...