批量添加前导零到变量

时间:2017-07-11 21:38:51

标签: batch-file

我正在尝试根据变量中的符号计数创建前导零生成器,它会在变量值和长度限制之前添加一些零。

我写了代码,但是我遇到了下一个问题:我的代码在第一个值(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。抱歉我的英语不好。

2 个答案:

答案 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