“術語”解釋先~~~,因為是偶自創滴!!!(不知是因為知道的詞匯太少,還是語文能力太好 @-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!
)