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

Zeichenkette mit evtl. Vornullen in Zahl umwandeln

Frage Entwicklung Batch & Shell

Mitglied: Haegar75

Haegar75 (Level 1) - Jetzt verbinden

14.02.2011 um 20:30 Uhr, 7413 Aufrufe, 8 Kommentare

Hallo Leute,
ich zerpflücke in einer For-Schleife einen String und erhalte Zeichenketten wie z.B 0055 oder 2045. Um diese Werte numerisch vergleichen zu können (z.B. grösser 1500 etc.) muss ich sie doch zuerst in eine "Zahl" umwandeln. Hat jemand ne Idee wie ich das geschickt anstellen könnte? Vielen Dank im voraus!
Haegar
Mitglied: Biber
14.02.2011 um 20:44 Uhr
Moin haegar75,

wenn diese "numerischen Teilstrings" beispielsweise alle jeweils 4stellig sind, dann schreib eine 5stellige (runde) Zahl davor und arbeite mit Modulo.

Demo am CMD-Prompt - ich schreibe "10000" vor deinen String "0055"
01.
>set /a 100000055 %10000 
02.
55 
03.
:: ich schreibe "10000" vor den String "2045" 
04.
>set /a 100002045 %10000 
05.
2045 
06.
::oder mit Variable 
07.
>set meinevar=0815 
08.
>set /a 10000%meinevar% % 10000 
09.
815
Prinzip klar?

Grüße
Biber
Bitte warten ..
Mitglied: Haegar75
14.02.2011 um 20:53 Uhr
Du bist ja in Fuchs! Vielen Dank!!!!
Bitte warten ..
Mitglied: AsciWhite
23.03.2016, aktualisiert um 15:31 Uhr
01.
02.
... 
03.
> ::oder mit Variable 
04.
>>set meinevar=0815 
05.
>>set /a 10000%meinevar% % 10000 
06.
> 815 
07.
> 

Hallo,
kann es sein, dass das erst ab Vista und höher geht? Auf WindowsXP bekomme ich die Fehlermeldung "fehlender Operartor". Auf Win7 läuft die Zeile wie erwartet.
Gruss
Bitte warten ..
Mitglied: Biber
23.03.2016 um 15:52 Uhr
Moin AsciWhite,

hab nun grad zufällig kein XP in einer VM auf meinem Nokia installiert, kann deshalb nicht nachschauen.
Aber eine flüchtige Recherche im Technet sagt eigentlich, dass dieses Feature unter XP schon verfügbar war.

Hast du diese Zeile vom CMD-Prompt aus gefeuert oder in einer Batchdatei?

Grüße
Biber
Bitte warten ..
Mitglied: AsciWhite
23.03.2016, aktualisiert um 20:34 Uhr
01.
@echo off 
02.
set meinevar=0815 
03.
set /a 10000%meinevar% % 10000
01.
@echo off 
02.
set /p tmp=Eingabe: 
03.
SET /a 10000%tmp% % 10000
Beides klaptt bei mir nicht :-O Jedes mal bekomme ich die Meldung: fehlender Operator
Habs jetzt über CMD und über Batchdatei probiert - gleicher Effekt :-O

*update*
wenn die Variable %meinevar% mit der 0815 belegt ist klappt die Zeile:

01.
>>set meinevar 
02.
>>meinevar=0815 
03.
 
04.
>>set /a 10000%meinevar% % 10000 
05.
>>815
Also klappt das ganze anscheined über Batchdatei nicht, weil die Variable zu spät aufgelöst wird.
Wie bekomme ich die Ausgabe eigentlich wieder einer Variable zugewiesen? ggf. so: ?
01.
set /a temp=10000%meinevar% % 10000
Bitte warten ..
Mitglied: rubberman
23.03.2016, aktualisiert um 20:56 Uhr
Hallo AsciWhite,

@Biber schrieb:
Demo am CMD-Prompt
und antwortete dir mit einem Wink mit dem Zaunpfahl
Hast du diese Zeile vom CMD-Prompt aus gefeuert oder in einer Batchdatei?
Genau wie bei FOR Variablen und Stringliteralen wird auch beim Modulo-Operator das Prozentzeichen verdoppelt, sobald es in einem Batchscript verwendet werden soll. Und natürlich funktioniert auch eine Zuweisung per SET /A.
set /a num=10000%meinevar% %% 10000
(temp ist vordefiniert, darum sollte man ggf. auf das Überschreiben des Werts verzichten und einen anderen Variablenname verwenden)

Grüße
rubberman
Bitte warten ..
Mitglied: AsciWhite
23.03.2016 um 21:41 Uhr
Hallo rubberman,
was du mir mit dem ersten Teil deiner Antwort sagen willst erschließt sich mir zwar nicht ganz da ich versucht habe die Versuche und Ausgaben darzustellen, aber zum zweiten Teil gibt von mir 5 Sterne :D was so ein beschi**enes %-Zeichen ausmachen kann *roleeyes*.
Jetzt klappt auch mit der Batchdatei ;)

Gruss und schönen Abend
Bitte warten ..
Mitglied: rubberman
23.03.2016 um 22:00 Uhr
Hallo AsciWhite

was du mir mit dem ersten Teil deiner Antwort sagen willst erschließt sich mir zwar nicht ganz
@Biber hat am CMD-Prompt getestet (also direkt in ein CMD Fenster händisch eingegeben), während du mit einem Batchscript arbeiten willst. Da gibt es einige kleine Unterschiede, die aber entscheidend für das Funktionieren des Codes sind.

Grüße
rubberman
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
Windows Server 2016 Datacenter - Evaluation in Datacenter umwandeln (3)

Tipp von Systembastler zum Thema Windows Server ...

Windows Server
Zweiter DNS arbeitet (evtl.) nicht korrekt (17)

Frage von Helgomat zum Thema Windows Server ...

Batch & Shell
gelöst Batch-Datei in Exe-Datei umwandeln - .exe im Autostart (7)

Frage von Luuke257 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...