以下應(yīng)一網(wǎng)友要求寫的進(jìn)度條配合BAT腳本批量執(zhí)行程序時給出程序的執(zhí)行進(jìn)度。
同時變相的處理在腳本中遇到的小數(shù)問題,我在腳本中做的不夠精確,如果需要更高的精確度,可以多添加幾次循環(huán)?;貜?fù)該貼中提出的小數(shù)問題 http://bbs.bitscn.com/85384
腳本內(nèi)容:
@echo off
title 程序制作"怕瓦落地".歡迎關(guān)注www.BitsCN.com
rem 說明:
rem 變量b為平均值的整數(shù)部分,變量c為平均值的小數(shù)部分,變量hs表示需要執(zhí)行的命令總數(shù)并加1,防止程序進(jìn)入死鎖.
rem 如果沒有小數(shù)部分,請把變量c賦零值
rem 變量pjump默認(rèn)為1表示在編輯note.txt文件時第一行必須為空.
color 0a
set b=1
set c=0
set /a hs=81
set pjump=1
set a=■
set /a zs=%b%
set /a g=%c%
rem 上面這部分沒什么解釋的,是主要變量的相關(guān)說明,及賦值。
:pstart
rem 進(jìn)度條代碼開始
cls
set a=%a%■
echo.
echo 程序正在安裝中,請等待
echo ┌─────────────────────────────────────┐
echo %a% %zs%.%g%%%
echo └─────────────────────────────────────┘
rem 進(jìn)度條代碼結(jié)束
rem 上面這部分是在該腳本執(zhí)行中所看到的進(jìn)度條是如何前進(jìn)的。
rem 下面這行是從文件note.txt中讀取預(yù)先編輯好的執(zhí)行命令和參數(shù),關(guān)于for命令的解釋請參考命令本身幫助系統(tǒng).
for /f "delims=, skip=%pjump% tokens=2" %%m in (note.txt) do set pcmd=%%m & goto jisuo
:jisuo
echo "正在執(zhí)行%pcmd%程序"
%pcmd%
set /a pjump=%pjump%+1
if %pjump%==%hs% goto pexit ::該句是判斷文件note.txt中有多少條需要執(zhí)行的命令,在腳本的開始部分有說明,需要人為的指出,主要的作用是防止腳本在運(yùn)行中出現(xiàn)意外,或者進(jìn)入死鎖.可有可無.
set /a zs=%zs%+%b%
set /a d=%d%+c
set e=%d%
set g=%d%
if %d% geq 10 goto xiaoshu
goto pstart
rem 上面這段是是處理百分比中如果出現(xiàn)小數(shù),也進(jìn)行粗略的計算,如果想獲得更高的精確度可以按照下面這段代碼去擴(kuò)展程序.
:xiaoshu
set g=%e:~-1% ::擴(kuò)展變量e 并取變量值的最后一個字符并賦值給變量g,如果變量e此時的值為15,那么此時g得到的值是5
set /a zs=%zs%+1
set /a d=%g%
goto pstart
rem 上面這段是計算小數(shù)部分當(dāng)小數(shù)部分壘加和大于等于10時才會執(zhí)行,
:pexit
exit
總的來說該腳本的運(yùn)行思路是讀取note.txt中預(yù)先編輯的命令和參數(shù)并給予執(zhí)行,每執(zhí)行完一條命令都會在進(jìn)度條上反映出執(zhí)行進(jìn)度(該腳本只能處理已知的進(jìn)度并加已表現(xiàn)).
關(guān)于在進(jìn)度條中出現(xiàn)的小數(shù).例如 15.3%. bat腳本中,偶還沒有找到能處理小數(shù)的命令,所以只能變相的處理了
處理方法是,把一個小數(shù)拆分成整數(shù)部分和小數(shù)部分并分別加以計算
在該腳本中但小數(shù)部分壘加和大于等于10時就會向整數(shù)部分進(jìn)1 并做相關(guān)處理步驟.腳本中用朱砂紅標(biāo)記出來的就是.
然后把兩個部分的計算結(jié)果在組合到一起.其實是通過輸出命令來做的用深綠色標(biāo)記出來的就是.并沒有相關(guān)的組合表達(dá)式來做這個步驟,因為不需要代入計算.只是用于顯示,足已.
該腳本代碼不長但用到的變量較多,應(yīng)該優(yōu)化的可能以減少多的變量.請仔細(xì)閱讀應(yīng)該不難理解.歡迎交流.
待執(zhí)行命令文件(以下文件內(nèi)容為事例文件),注意:在測試環(huán)境中,復(fù)制下面的內(nèi)容保存為note.txt文件并放在腳本同一目錄即可。
【轉(zhuǎn)自bbs.bitsCN.com】
聯(lián)系客服