Remove leading zeros in batch file

后端 未结 4 1611
逝去的感伤
逝去的感伤 2020-12-05 23:57

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

相关标签:
4条回答
  • 2020-12-06 00:25

    You can use FOR /F to remove leading zeros.

    C:\>SET n=00030
    echo off
    for /f "tokens=* delims=0" %a in ("%n%") DO echo %a
    30
    

    As you can see, the delims is set to 0. This will makes 0 as a delimiter. At the same time with tokens of * this will ensure that the leading 0's will be removed while the rest of the line will be processed (including trailing 0's).

    You may refer to this link for more information about removal of leading 0's.

    P.S. Do remember to use %%a instead of %a when you are running on batch file in FOR /F.

    0 讨论(0)
  • 2020-12-06 00:29

    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.

    0 讨论(0)
  • 2020-12-06 00:31

    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%
    
    0 讨论(0)
  • 2020-12-06 00:46

    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"
    
    0 讨论(0)
提交回复
热议问题