Öffnen Sie eine Eingabeaufforderung und geben Sie set /?
:
[...] Numeric values are decimal numbers, unless prefixed by 0x for hexadecimal numbers, and 0 for octal numbers. So 0x12 is the same as 18 is the same as 022. Please note that the octal notation can be confusing: 08 and 09 are not valid numbers because 8 and 9 are not valid octal digits. [...]
Sie werden feststellen, dass set /A
behandelt Zahlen mit führenden 0
als Oktal Zahlen.
Um dies zu überwinden, können Sie folgendes tun:
Präfix die Zahl mit 1
und entfernen Sie sie wieder nach den Berechnungen:
set last_two=1!file_name:~-2,2!
set /A add_millisec=last_two+1
set add_millisec=!add_millisec:~-2!
Dafür benötigen Sie die Gesamtzahl wissen von Ziffern im Voraus.
Entfernen Sie die nachfolgenden Nullen vor irgendwelchen Berechnungen und Pad das Ergebnis mit führenden Nullen danach je nach Bedarf:
set last_two=!file_name:~-2,2!
rem The following line removes all leading zeros:
for /F "tokens=* delims=0" %%Z in ("!last_two!") do set last_two=%%Z
set /A last_two+=0 & rem this avoids `last_two` to be empty if it is `0`
set /A add_millisec=last_two+1
set add_millisec=0!add_millisec!
set add_millisec=!add_millisec:~-2!
Oder:
set last_two=!file_name:~-2,2!
rem The following two lines remove all leading zeros:
cmd /C exit !last_two!
set /A last_two=!ErrorLevel!
set /A add_millisec=last_two+1
set add_millisec=0!add_millisec!
set add_millisec=!add_millisec:~-2!
Diese Methode ist flexibler als Sie wissen nicht, die Anzahl an Ziffern.
Mögliche Kopie von [Ungültige Nummer. Numerische Konstanten sind entweder dezimal (17), hexadezimal (0x11) oder oktal (021)] (http://stackoverflow.com/questions/9762794/invalid-number-numeric-constants-are-either-decimal-17-hexadecimal) -0x11-o) –
Konstanten beginnen mit 0 sind Oktalwerte, aber 8 und 9 ist keine gültige Oktalziffer, daher haben Sie den Fehler –
Ja, da 8 und 9 keine Oktalziffern sind, bekomme ich diesen Fehler .. ist es gibt keine Möglichkeit, ich kann dies vermeiden und weiter mit meinem Fluss – Bharath