haegar75
Goto Top

Zeichenkette mit evtl. Vornullen in Zahl umwandeln

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

Content-Key: 160762

Url: https://administrator.de/contentid/160762

Printed on: April 19, 2024 at 22:04 o'clock

Member: Biber
Biber Feb 14, 2011 at 19:44:02 (UTC)
Goto Top
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"
>set /a 100000055 %10000
55
:: ich schreibe "10000" vor den String "2045"  
>set /a 100002045 %10000
2045
::oder mit Variable
>set meinevar=0815
>set /a 10000%meinevar% % 10000
815

Prinzip klar?

Grüße
Biber
Member: Haegar75
Haegar75 Feb 14, 2011 at 19:53:28 (UTC)
Goto Top
Du bist ja in Fuchs! face-wink Vielen Dank!!!!
Member: AsciWhite
AsciWhite Mar 23, 2016 updated at 14:31:24 (UTC)
Goto Top
>
...
> ::oder mit Variable
>>set meinevar=0815
>>set /a 10000%meinevar% % 10000
> 815
> 

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
Member: Biber
Biber Mar 23, 2016 at 14:52:47 (UTC)
Goto Top
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
Member: AsciWhite
AsciWhite Mar 23, 2016 updated at 19:34:29 (UTC)
Goto Top
@echo off
set meinevar=0815
set /a 10000%meinevar% % 10000

@echo off
set /p tmp=Eingabe:
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:

>>set meinevar
>>meinevar=0815

>>set /a 10000%meinevar% % 10000
>>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: ?
set /a temp=10000%meinevar% % 10000
Member: rubberman
rubberman Mar 23, 2016 updated at 19:56:09 (UTC)
Goto Top
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
Member: AsciWhite
AsciWhite Mar 23, 2016 at 20:41:57 (UTC)
Goto Top
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
Member: rubberman
rubberman Mar 23, 2016 at 21:00:38 (UTC)
Goto Top
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