兔子的技术博客

兔子

   :: 首页 :: 联系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新评论

阅读排行榜

评论排行榜

摘自:http://www.verybat.org/viewthread.php?tid=20697

忽然灵机一动,想到一个开放性数字序号格式化补零的办法

“术语”解释先~~~,因为是偶自创滴!!!(不知是因为知道的词汇太少,还是语文能力太好 @-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!
)

posted on 2010-02-22 22:23 会飞的兔子 阅读(2313) 评论(0)  编辑 收藏 引用 所属分类: 非C++技术资料

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理