“术语”解释先~~~,因为是偶自创滴!!!(不知是因为知道的词汇太少,还是语文能力太好 @-P)
【数字序号格式化补零】:就是所有序号位数一样,不足的以0代替
网上常用的是类似的办法:如 if %test% LSS 100 set test=00%test%
这种办法的弊端是,没有灵活性,用户不能根据实际情况来自定义长度。
今天正在编一个批处理,要实现这个。当时隐约感觉有办法,发了一下呆,真的被我想到了!哥高兴,于是乎急不可耐(用词似乎又不准了~~)地想分享给同学们
::格式化数字序号 演示
::2010-01-21:想到此算法
@echo off
:ks
cls
setlocal enabledelayedexpansion
set /p Digit=位数:
set /p d=测试数字:
set StrPrefix=
for /l %%i in (1,1,!Digit!) do (
set StrPrefix=!StrPrefix!0
)
echo.
set d=!StrPrefix!!d!
set d=!d:~-%Digit%!
echo 参照长度:!StrPrefix!
echo 截取结果:!d!
pause
goto ks
【补充】
在排序前,也许不知道文件总数是几位数,只知道大概,比如输入位数是2,而实际文件数有110(3位数),这时就会出问题了,所以必须在计数循环中加入以下代码(其中Num表示计数变量,tempNum即是经过处理后的序号)。如此处理,若超出设定位数,就不参与补零格式化:
if !Num! LSS 1!StrPrefix! (
set tempNum=!StrPrefix!!num!
set tempNum=!tempNum:~-%Digit%!
) else (
set tempNum=!Num!
)