@echo off&setLocal EnableDelayedExpansion
echo 进度条
chcp 65001
color 08
cls
goto :main
rem 显示进程
:runProgress
set /a rPgi=100 * %1 / %2
if !rPgi! GTR 100 set rPgi=100
set /a rPgN=%rPgi%/2
set "spinner=/-\l"
set /a index=%1 %% 4
set "dian=...."
set "spin=!spinner:~%index%,1!"
set "spl=!dian:~,%index%!"
set cmplt=■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
set uncmp=□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
call:BpByStr !cmplt:~0,%rPgN%!!uncmp:~%rPgN%! %rPgi%%%%% %1/%2 !spin! %3 Loading!spl!
goto :eof
rem 重复显示删除
:BpByStr
if "%bp%"=="" call:b bp
set "BpByStrold=%*"
set /p=%bp%%bp%%bp%%bp%%bp%<nul
set "BpByStr=%BpByStrold%"
set /p=%BpByStr%<nul
goto :eof
rem 退格
:b
for /F %%a in ('"prompt $h&for %%b in (1) do rem"') do (
Set "%~1=%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a")
goto :eof
:main
set "DesktopPath=%USERPROFILE%\Desktop"
cd "%DesktopPath%"
echo. > numbers.txt
set count=10000
for /L %%i in (0, 1, %count%) do (
call :runProgress %%i %count% %name%
echo %%i >> numbers.txt
)
pause >nul
cmd脚本实现了进度条功能,通过main子函数可以灵活与别的脚本在内外结合,示例是在桌面新建文本输出从0到10000的数。进度条有简单的动画功能,并会显示百分比和当前处理项。