Sring65 发表于 2021-8-4 11:57

bat 进度条

本帖最后由 Sring65 于 2021-8-5 12:01 编辑

@echo off&setLocal EnableDelayedExpansion
echo 进度条
set /a n=0
set /a max=200
:loop
        set /a n+=1
        call :runProgress %n% %max%
        if %n% GEQ %max% (echo;&pause&set /a n=0)
goto:loop

rem 显示进程
:runProgress
        set /a rPgi=100 * %1 / %2
        set /a rPgN=%rPgi%/2
        set cmplt=■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
        set uncmp=□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
        call:BpByStr !cmplt:~0,%rPgN%!!uncmp:~%rPgN%! %rPgi%%%%%
goto :eof
rem 重复显示删除
:BpByStr
if "%bp%"=="" call:Backspace bp
set "BpByStrold=%*"
set /p=%bp%%bp%%bp%%bp%%bp%<nul
set "BpByStr=%BpByStrold%"
set /p=%BpByStr%<nul
goto :eof
rem 退格
:Backspace
        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

luliucheng 发表于 2021-8-4 16:06

本帖最后由 luliucheng 于 2021-8-5 11:34 编辑

帮楼主修正一下代码:第8行改为if %n% GEQ %max% (echo;&pause&goto :eof),否则程序不会结束而会无限循环。另外,第10行和第11行可以去掉,不影响程序运行。

Sring65 发表于 2021-8-5 11:51

xianyuamiao123 发表于 2021-8-4 19:56
感谢楼主分享。要是能下载到楼主的notepad主题就更好了

可以搜索notepad2可以找到
https://github.com/zufuliu/notepad2

pipiji233 发表于 2021-8-4 13:38

我喜欢一个个打着玩

wqipk 发表于 2021-8-4 13:56

很漂亮,感谢楼主分享.

涛之雨 发表于 2021-8-4 14:06

进度条那里应该也可以通过for循环显示

hhtdon 发表于 2021-8-4 14:35

学到了,感谢楼主分享

soleil 发表于 2021-8-4 14:50

按任何键之后一直在循环嘛哈哈

longpo 发表于 2021-8-4 14:53

看着还真不错

asdswd 发表于 2021-8-4 15:14

987fw 发表于 2021-8-4 15:24

确实挺好玩。
页: [1] 2 3
查看完整版本: bat 进度条