[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
12# batman
效果很好。刚开始理解错了。呵呵。

TOP

12# batman


怎么在回退后再返回回退前的那行?要不后面的输出都把进度条盖住了。我试了echo.你看一下call两次进度条的效果就明白,求你帮忙解码一下!呵呵,谢谢

TOP

echo,就行。。。
***共同提高***

TOP

18# batman
  1. echo off&setlocal enabledelayedexpansion
  2. mode con cols=55 lines=25
  3. set "tab= "&rem 请将此处空格换成实际的制表符
  4. pause
  5. call :ProcessBar 1 ShowInformation
  6. call :ProcessBar 1 ShowInformation
  7. echo. 你好
  8. echo. 你好
  9. echo. 你好
  10. echo. 你好echo. 你好
  11. echo. 你好
  12. pause>nul
  13. exit
  14. rem p:间隔 i:进度百分比
  15. :ProcessBar
  16. set p=%1
  17. set info=%2
  18. rem 32=倒退3行*10+2
  19. for /l %%a in (1,1,32) do set "k=!k!"
  20. echo     ┏━━━━━━━━━━━━━━━━━━━━┓
  21. echo.
  22. echo     ┗━━━━━━━━━━━━━━━━━━━━┛
  23. echo.                       %info%
  24. rem echo %tab%%k% 2>nul
  25. rem 2>nul屏蔽错误信息      
  26. 2>nul echo %tab%%k%
  27. echo.&set /p=     ▉<nul
  28. for /l %%i in (1,1,20) do set/p=▉<nul&ping /n %p% 127.1>nul
  29. echo.
  30. echo.
  31. echo,
  32. echo.
  33. goto :eof
复制代码
上面是我试验的程序,输出两个进度条,再在进度条下面输出一些字。可是效果很不如意:

TOP

第二次call前要把k变量清空,不然回退的是6行。。。
***共同提高***

TOP

学到很多,理解深了很多....

TOP

可能是系统不一样吧,我机子上reg query hkcu\environment /v temp的结果并未出现tab符...

TOP

batman的好像没有左右两边的框..

TOP

20# batman
  1. for /l %%i in (1,1,20) do set/p=▉<nul&ping /n %p% 127.1>nul
复制代码
请问一下,这个同行输出▉,可以跳转其他行后再返回此行接着同行输出吗?不是从行首开始,而是接着这行其他内容后输出!?

TOP

本帖最后由 batman 于 2011-4-17 18:42 编辑

这样子可以不(注意替换tab):
  1. @echo off&setlocal enabledelayedexpansion
  2. set "tab= "
  3. for /l %%a in (1,1,22) do (
  4.     set "t=!t!"
  5.     if %%a leq 20 set "k=!k!  "
  6. )
  7. for /l %%a in (1,1,80) do set "tg=!tg! "
  8. echo,&echo     ┌────────────────────┐
  9. echo,&echo     └────────────────────┘
  10. echo %tab%%t% 2>nul&set /p=     │<nul
  11. for /l %%a in (1,1,20) do (
  12.     set /a "a=(20-%%a)*2","b=(22-%%a)*6+4",c=%%a00/20
  13.     set "c=  !c!"&set "c=!c:~-3!"
  14.     for %%a in (!a!) do (
  15.         set "str=■!k:~,%%a!│!c!%%"
  16.         set /p=!str!<nul
  17.         for /l %%b in (1,1,500) do echo>nul
  18.         if %%a neq 0 for %%a in (!b!) do set /p=!tg:~,%%a!<nul
  19.     )
  20. )
  21. pause>nul
复制代码
***共同提高***

TOP

本帖最后由 batman 于 2011-4-17 18:40 编辑

要不就只能这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "tab= "
  3. for /l %%a in (1,1,22) do set "t=!t!"
  4. for /l %%a in (1,1,80) do set "tg=!tg! "
  5. echo,&echo     ┌───────────────────┐
  6. echo,&echo     └───────────────────┘
  7. for /l %%a in (1,1,20) do (
  8.     echo %tab%%t% 2>nul&set /p=      <nul
  9.     set /a a=%%a00/20
  10.     set "a=  !a!"&set "a=!a:~-3!"
  11.     for /l %%b in (1,1,%%a) do set /p=■<nul
  12.     for /l %%b in (1,1,1000) do echo>nul
  13.     if %%a neq 20 set /p=%tg%<nul
  14.     echo,&echo,&set /p=                      !a!%%<nul
  15.     for /l %%b in (1,1,1000) do echo>nul
  16.     if %%a neq 20 set /p=%tg%<nul
  17. )
  18. pause>nul
复制代码
***共同提高***

TOP

27# batman


谢谢。原来我的想法是不现实的。呵呵。非常感谢

TOP

思维定向,可以做到的(注意替换tab为实际的制表符):
  1. @echo off&setlocal enabledelayedexpansion
  2. set "tab= "
  3. for /l %%a in (1,1,22) do set "t=!t!"
  4. for /l %%a in (1,1,80) do set "tg=!tg! "
  5. echo,&echo     ┌────────────────────┐
  6. echo                                               │
  7. echo     └────────────────────┘
  8. for /l %%a in (1,1,20) do (
  9.     echo %tab%%t% 2>nul&set /p=     │<nul
  10.     set /a a=%%a00/20
  11.     set "a=  !a!"&set "a=!a:~-3!"
  12.     for /l %%b in (1,1,%%a) do set /p=■<nul
  13.     for /l %%b in (1,1,500) do echo>nul
  14.     echo,&echo,&set /p=                      !a!%%<nul
  15.     for /l %%b in (1,1,200) do echo>nul
  16.     if %%a neq 20 set /p=%tg%<nul
  17. )
  18. pause>nul
复制代码
***共同提高***

TOP

好看 就是看不懂

TOP

不错,学习了~

TOP

返回列表