Remove leading zeros in batch file

Mahesh picture Mahesh · Feb 8, 2013 · Viewed 15.8k times · Source

In my application, I get a number having leading zeros. I am trying to trim the leading zeros and get the actual number. I tried using /a switch which considers right side of the assignment as an arithmetic expression. So I tried:

SET /a N = 00027

The above gave me the output of 23 which is the decimal equivalent of octal number 27. Then I found this solution online.

SET N = 00027
SET /a N = 1%N%-(11%N%-1%N%)/10

This seems working and is giving the output 27. Is there much easier way to trim the leading zeros in a batch file?

Answer

dbenham picture dbenham · Feb 8, 2013

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"