Entfernen führender Nullen in batch-Datei
In meiner Anwendung, ich bekomme eine Zahl mit führenden Nullen. Ich bin versucht zu kürzen, führende Nullen und die tatsächliche Anzahl. Ich habe versucht, mit /a
wechseln Sie die Ansicht der rechten Seite der Zuweisung, die als ein arithmetischer Ausdruck. So habe ich versucht:
SET /a N = 00027
Oben gab mir den Ausgang der 23 das ist die Dezimalzahl Oktalzahl 27. Dann fand ich diese Lösung online.
SET N = 00027
SET /a N = 1%N%-(11%N%-1%N%)/10
Diese scheint, die Arbeit und gibt die Ausgabe 27. Ist es viel einfacher Weg, um trim die führenden Nullen in einer batch-Datei?
InformationsquelleAutor der Frage Mahesh | 2013-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Methode, die Sie gefunden haben, ist sehr gut. Es unterstützt die zahlen bis 99,999,999 und ist sehr schnell.
Es ist ein einfacher Weg, um die Verwendung von SET /A arbeitet mit zahlen bis 9999. Es nutzt die modulo-operation. Die Methode kann erweitert werden, um größere zahlen.
FOR /F Methode, Dale gepostet funktioniert mit "jedem" Größe Anzahl (bis zu 8191-stellig). Jedoch, es braucht einfach nur ein bisschen mehr Arbeit zu verarbeiten null-Werte.
Ist es möglich, das gleiche zu tun, mit einer einzigen Zeile ersetzen
||
für die IF-Anweisung. Die FOR /F-Anweisung löst eine Stille Fehler, wenn es keine Iterationen.InformationsquelleAutor der Antwort dbenham
Können Sie
FOR /F
zu entfernen führender Nullen.Wie Sie sehen können, die
delims
auf 0 gesetzt ist. Dies macht eine " 0 " als Trennzeichen verwendet wird. Gleichzeitig mittokens
von*
dadurch wird sichergestellt, dass die führende 0 entfernt werden, während der rest der Zeile wird bearbeitet (einschließlich trailing-0).Entnehmen Sie bitte dieser link weitere Informationen über das entfernen der führende 0.
P. S. denken Sie daran, verwenden Sie
%%a
statt%a
wenn Sie mit batch-Datei inFOR /F
.InformationsquelleAutor der Antwort Dale
Den exit-Befehl ist ziemlich gut bei der Reinigung von führenden Nullen:
Mit diesem können Sie bis zu 32-bit-integer-Grenze und der code ist sehr klein, trotz zusätzlichen Anruf von cmd.exe Schaden könnten die Leistung.
InformationsquelleAutor der Antwort npocmaka
Wenn es nur eine Frage der Beseitigung aller Nullen, Sie können es so machen:
InformationsquelleAutor der Antwort Matthew