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?
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"
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
.
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.
If it's only a matter of removing all zeros, you can do it like this:
> SET n=00000002304650620000.23094400
> SET n=%n:0=%
2346562.23944
来源:https://stackoverflow.com/questions/14762813/remove-leading-zeros-in-batch-file