1,有这样一个变量,他是由数字构成,前面为若干个0,去掉这些0,我可以用这样的方法:批处理1
2,因为这里使用了call和两个标签,我想换一个方法,通过00=0来判断。
测试:批处理2
运行结果:
不等1
不等2
不等3
不等4
不等5
等于6
所以,使用 equ 及不使用引号,就可以实现比较时000等于0。
3,于是,做了一个这样的批处理:批处理3
出现错误:此时不应有 %k!。
只能写成这样才可以:批处理4
运行正常
或者是:批处理5
运行正常
为什么在这里(批处理3),不使用引号就不能直接截取!E:~0,%%k!呢?
[ Last edited by Hanyeguxing on 2009-9-19 at 06:57 ]
@echo off&setlocal enabledelayedexpansion
set E=000001
call :D !E!
echo 结果!E!
pause&exit
:D
set E=%1
:F
if "!E:~0,1!" == "0" set E=!E:~1!&goto F2,因为这里使用了call和两个标签,我想换一个方法,通过00=0来判断。
测试:批处理2
@echo off
set a=000
if "%a%" == "00" (echo 等于1) else echo 不等1
if "%a%" == 00 (echo 等于2) else echo 不等2
if %a% == 00 (echo 等于3) else echo 不等3
if "%a%" equ "00" (echo 等于4) else echo 不等4
if "%a%" equ 00 (echo 等于5) else echo 不等5
if %a% equ 00 (echo 等于6) else echo 不等6
pause运行结果:
不等1
不等2
不等3
不等4
不等5
等于6
所以,使用 equ 及不使用引号,就可以实现比较时000等于0。
3,于是,做了一个这样的批处理:批处理3
@echo off&setlocal enabledelayedexpansion
set E=000001
for /l %%k in (5 -1 1) do if !E:~0,%%k! equ 0 set E=!E:~%%k!
echo 结果!E!
pause出现错误:此时不应有 %k!。
只能写成这样才可以:批处理4
@echo off&setlocal enabledelayedexpansion
set E=000001
for /l %%k in (5 -1 1) do if "!E:~0,%%k!" equ "00000" set E=!E:~%%k!
echo 结果!E!
pause运行正常
或者是:批处理5
@echo off&setlocal enabledelayedexpansion
set E=000001
for /l %%k in (5 -1 1) do set F=!E:~0,%%k!&if !F! equ 0 set E=!E:~%%k!
echo 结果!E!
pause运行正常
为什么在这里(批处理3),不使用引号就不能直接截取!E:~0,%%k!呢?
[ Last edited by Hanyeguxing on 2009-9-19 at 06:57 ]
