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, 5824 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Batch Script Editor - Programmvorstellung des Entwicklers (16)

Tipp von wowItsDoge zum Thema Batch & Shell ...

Windows Server
Batch Script bei Start ausführen (3)

Frage von KEFHVDI zum Thema Windows Server ...

Batch & Shell
Batch-Script für Lizenzen (3)

Frage von stoepsu77 zum Thema Batch & Shell ...

Batch & Shell
Batch-Script für die Messung der Netzwerkgeschwindigkeit (10)

Anleitung von Kraemer zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...