Remove leading zeros in batch file

The method you found is very good. It supports numbers up to 99,999,999 and is very fast.

There is a simpler way to use SET /A that works with numbers up to 9999. It uses the modulus operation. The method cannot be extended to larger numbers.

 set n=0027
 set /a n=10000%n% %% 10000

The FOR /F method that Dale posted works with "any" size number (up to 8191 digits). However, it needs just a bit more work to handle zero values.

set n=000000000000000000000000000000000000000000000000000027
for /f "tokens=* delims=0" %%N in ("%n%") do set "n=%%N"
if not defined n set "n=0"

The exit command is pretty good at clearing leading zeros:

>set n=0000890

>cmd /c exit /b %n%

>echo %errorlevel%
890

With this you can use number up to 32 bit integer limit and the piece of code is really small, despite additional call of cmd.exe could harm the performance.


I found this problem when trying to solve a similar issue myself. I liked your solution until I realized there is a slightly better way:

SET /a N=1%N%+1%N%-2%N%