我正在尝试根据变量中的符号计数创建前导零生成器,它会在变量值和长度限制之前添加一些零。
我写了代码,但是我遇到了下一个问题:我的代码在第一个值(0变为00000)后停止工作,但它必须处理到值10(结束号必须是00010)。
@echo off
setlocal enabledelayedexpansion
set num_max=10
set num_len=5
for /l %%i in (0,1,%num_max%) do (
set num=%%i
:loop
set "len=0123456789!num!"
set "len=!len:~-10,1!"
if not !len! equ %num_len% (
set num=0!num!
goto loop )
echo !num! is !len! symbols long
)
pause
它出了什么问题?请帮忙。
P.S。抱歉我的英语不好。
答案 0 :(得分:1)
您不能在code block
(带括号的命令集)中拥有标签(:循环)。
尝试
setlocal enabledelayedexpansion
set num_max=10
set my_num=123
set "my_num=0000000000%my_num%"
set "mynum=!my_num:~-%num_max%!"
echo %my_num%
或者,如果你想构建前导零,
setlocal enabledelayedexpansion
set num_max=10
set my_num=123
:loop
set "my_num=0%my_num%"
if "!mynum:~%num_max%!" equ "" goto loop
echo %my_num%
这两者都应该很容易阅读。
答案 1 :(得分:1)
我可以建议一种不同的,更简单的方法吗?
@echo off
setlocal EnableDelayedExpansion
set num_max=10
set num_len=5
set "base=1"
for /L %%i in (1,1,%num_len%) do set "base=!base!0"
for /L %%i in (0,1,%num_max%) do (
set /A "num=base+%%i"
echo !num:~1!
)
输出:
00000
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010