1,利用 dir 指令获取 拷贝 文件的文件大小。
2,文件大小除去硬盘传输速率得到动画的延时时间
3,利用这个时间写动画。
我在下面的一楼里就直接把这个代码给出来了。
注:代码经过精简,省去了第一步。。(因为是算法嘛:)
[ Last edited by flyinspace on 2007-4-1 at 02:34 PM ]作者: flyinspace 时间: 2007-4-2 03:17 标题: 先用一楼。一会发代码
@echo off & SetLocal EnableDelayedExpansion
set BackSpace=
set RateBar=□
set Rate=0
set AllFile=1
set ExistFile=0
set FileName=测试.rar
set /a FileSize=42719467
set /a CopySpeed=86500
set /a UseTime=%FileSize%/%CopySpeed%
set /a ShowTime=%UseTime%/100
set Rate_Num=0
set Space_Num=11
set /p=正在拷贝文件:[%FileName%],需用时间:%UseTime%微秒<nul & echo.
echo ---------------------------------------------------
rem start /min [path]FileName [path]
set /p=目前已经完成: <nul
for /l %%i in (0,1,100) do (
set /a output=%%i%%10
if "!output!"=="0" (
rem echo The %%i Time
set /p=!BackSpace!<nul
set /a Space_Num=!Space_Num!-1
set /a Rate_Num=!Rate_Num!+1
call :PutChar !Rate_Num! !Space_Num!
)
if %%i LSS 10 set /p=: %%i%%<nul
if %%i GEQ 10 set /p=: %%i%%<nul
call :ProcDelay %ShowTime%
set /p=<nul
)
echo.
echo 拷贝已经完成!
echo.
goto EXIT
::::::::::::::输出空格:::::::::::::::::::::::
:PutChar _num_ _a_
for /l %%i in (1,1,%1) do (
rem echo !RateBar!
set /p=!RateBar!<nul
)
for /l %%i in (1,1,%2) do (
set /p= <nul
)
goto :EOF
::::::::::::::延时子程序:::::::::::::::::::::
:ProcDelay _Delay_
for /f "tokens=1-4 delims=:. " %%i in ("%time%") do set start=%%i%%j%%k%%l
:_TimeReturn_
for /f "tokens=1-4 delims=:. " %%i in ("%time%") do set end=%%i%%j%%k%%l
set /a s=%end%-%start%
if %s% LSS %1 goto _TimeReturn_
ENDLOCAL & GOTO :EOF
:EXIT
pause
[ Last edited by flyinspace on 2007-4-1 at 02:25 PM ]作者: flyinspace 时间: 2007-4-2 03:55 其实,该代码不少代码都是借鉴别人的。
例如延时子程序。(作者未知)