一、模拟进度条的符号
一般用■■■■■■■■■■■■■■■■■■■■■■■■■■■■■、>>>>>>>>>>>>>>>>>>>>>>>>>>、---------------------------------等特殊符号来模拟进度条。
二、模拟进度条的代码
注意这是模拟,而不表示是真实的进度情况。
在下载、或执行程序时,如果想要模拟执行过程进度,可以用到下面的代码。
@echo off
chcp 65001
mode con cols=113 lines=15 &color 9f
cls
echo.
echo 程序正在初始化. . .
echo.
echo ┌──────────────────────────────────────┐
for /L %%i in (1 1 38) do set /p a=■<nul&ping /n 1 127.0.0.1>nul
echo 100%%
echo └──────────────────────────────────────┘
pause
其中命令【set /p a=■<nul】能够输出方块并且不产生换行符(因为重定向了一个nul,也就相当于空字符),通过用for /l命令不断执行这个输出方块的命令,就可以实现模拟进度条。
如果想要进度条更缓慢加载,可以调整后面ping /n的参数/n的数值。
如果想要修改进度条的长度,可以调整(1 1 38)中的最后一个值(也即修改38这个数字)。
执行效果如下。

比较完美,但是输出上中括号的时候太快,感觉局部节奏不协调,我们在第三部分尝试微修一下。
三、稍加修改局部模拟节奏
修改后的代码如下
@echo off
chcp 65001
mode con cols=113 lines=15 &color 9f
cls
echo.
echo 程序正在初始化. . .
echo.
echo ┌──────────────────────────────────────┐
ping /n 1 127.0.0.1 >nul & set /p=<nul
for /L %%i in (1 1 38) do set /p a=■<nul&ping /n 1 127.0.0.1>nul
echo 100%%
echo └──────────────────────────────────────┘
pause
执行效果

由于没办法播放动图,所以需要读者自己去在cmd窗口中自己run着试一下了。
四、回顾与疑问
在网上类似的代码很多,但基本上都加了【set /p a=■<nul】,但是我非常不明白这一行有什么意义。
因为首先没有任何变量被赋值,真的合法吗?
其次,后面在执行for命令语句的时候,每一次运行【set /p a=■<nul】就会输出一个■,那为啥最前面要加一个方块呢?

后来,我把代码改成下面这样,也就是在for命令语句内的set /p我也改成不加任何变量名的。
@echo off
mode con cols=113 lines=15 &color 9f
chcp 65001
cls
echo.
echo "程序正在初始化. . . "
echo.
echo "┌──────────────────────────────────────┐"
for /L %%i in (1 1 3) do set /p =■<nul&ping /n 1 127.0.0.1>nul
echo 100%%
echo "└──────────────────────────────────────┘"
pause
执行效果如下,非常完美,所以如果你们就是想要模拟进度条,完全可以在set /p中不加变量。

2972

被折叠的 条评论
为什么被折叠?



