[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 CrLf 于 2015-5-3 16:39 编辑

不用 cls 可避免闪屏,有两种思路:
1、用特殊字符退行技巧
2、输出一个长度为屏幕范围的变量,确保每次刷一屏

来个比较平滑的进度条,进度就简单用标题搞定了,这样就不会有累赘的代码,反正知道了原理其实都是一回事
  1. @echo off & setlocal enabledelayedexpansion
  2. set "Status=█▉▊▋▌▍▎▏"
  3. for /f "delims=d" %%a in ('cmd /u /c echo 損') do set CR=%%a
  4. for /f "delims=h" %%a in ('cmd /u /c echo 栈') do set BS=%%a
  5. for /f "delims=i" %%a in ('cmd /u /c echo 椉') do set HT=%%a
  6. echo ┌─────────────────────────┐
  7. echo │                         │
  8. echo └─────────────────────────┘
  9. set BS*10=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%
  10. (
  11. set /p"=@!CR!%HT%%BS%%BS*10%%BS*10%!CR!│"
  12. title 进度   0.00 %%
  13. for /l %%a in (1 1 25) do (
  14. for /l %%a in (1 1 8) do (
  15. ping /n 1 127.0.0.1 >nul
  16. ping /n 1 127.0.0.1 >nul
  17. set /a "n+=1,num=10000*n/25/8,num1=num/100,num2=num%%100+100"
  18. set "num=   !num1!.!num2:~-2!"
  19. title 进度 !num:~-6! %%
  20. set /p=!Status:~-%%a,1!%BS%
  21. )
  22. set /p=!Status:~0,1!
  23. )
  24. )<nul
  25. echo;
  26. echo;
  27. echo The End~
  28. pause>nul & exit /b
复制代码
退行的原理已经找不到出处了,有兴趣就参考 batman 的帖子吧
http://www.bathome.net/viewthread.php?tid=11266
获取特殊字符的办法来自 plp626 的世纪发明:
http://www.bathome.net/viewthread.php?tid=12347
1

评分人数

TOP

返回列表