Board logo

标题: [其他] [已解决]批处理模拟XP系统开机滚动条 [打印本页]

作者: baiyuheitu    时间: 2009-4-26 13:47     标题: [已解决]批处理模拟XP系统开机滚动条

更新:我想要的具有如图所示效果,但一摸一样有点困难,要求保留文字和滚动部分外面的方框!


[attach]1219[/attach]




原来部分:如何制作一批处理,模拟xp系统开机滚动条,百思不得其解,我只会简单的制作一个只有走动块的走动条,且代码很差劲,如下:
  1. @echo off
  2. mode con lines=10 cols=50
  3. title 滑动块演示!
  4. :1
  5. echo ■■■
  6. ping 127.1 -n 1 >nul&&cls
  7. echo   ■■■
  8. ping 127.1 -n 1 >nul&&cls
  9. echo     ■■■
  10. ping 127.1 -n 1 >nul&&cls
  11. echo       ■■■
  12. ping 127.1 -n 1 >nul&&cls
  13. echo         ■■■
  14. ping 127.1 -n 1 >nul&&cls
  15. echo           ■■■
  16. ping 127.1 -n 1 >nul&&cls
  17. echo             ■■■
  18. ping 127.1 -n 1 >nul&&cls
  19. echo               ■■■
  20. ping 127.1 -n 1 >nul&&cls
  21. echo                 ■■■
  22. ping 127.1 -n 1 >nul&&cls
  23. echo                   ■■■
  24. ping 127.1 -n 1 >nul&&cls
  25. echo                     ■■■
  26. ping 127.1 -n 1 >nul&&cls
  27. echo                       ■■■
  28. ping 127.1 -n 1 >nul&&cls
  29. echo                         ■■■
  30. ping 127.1 -n 1 >nul&&cls
  31. echo                           ■■■
  32. ping 127.1 -n 1 >nul&&cls
  33. echo                             ■■■
  34. ping 127.1 -n 1 >nul&&cls
  35. echo                               ■■■
  36. ping 127.1 -n 1 >nul&&cls
  37. echo                                 ■■■
  38. ping 127.1 -n 1 >nul&&cls
  39. echo                                   ■■■
  40. ping 127.1 -n 1 >nul&&cls
  41. echo                                     ■■■
  42. ping 127.1 -n 1 >nul&&cls
  43. echo                                       ■■■
  44. ping 127.1 -n 1 >nul&&cls
  45. echo                                         ■■■
  46. ping 127.1 -n 1 >nul&&cls
  47. echo                                           ■■■
  48. ping 127.1 -n 1 >nul&&cls
  49. set /a n+=1
  50. if %n% lss 4 goto 1
  51. pause >nul
复制代码

[ 本帖最后由 baiyuheitu 于 2009-4-29 21:14 编辑 ]
作者: yslyxqysl    时间: 2009-4-26 13:59

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. mode con lines=10 cols=50
  4. title 滑动块演示!
  5. for /l %%i in (1 1 4) do (
  6. set str=■■■
  7. for /l %%j in (1 1 22) do (
  8.   echo !str!
  9.   ping 127.1 -n ^1>nul
  10.   cls
  11.   set "str=  !str!"
  12. )
  13. )
  14. pause>nul
复制代码

作者: baiyuheitu    时间: 2009-4-26 14:52     标题: 回复 2楼 的帖子

不错,我想按照现实中的windows xp系统的开机滚动条进行设计,该如何做?ping 127.1 -n ^1>nul 这句命令中的 ^1是啥意思?
作者: defanive    时间: 2009-4-26 16:09

简易版:
  1. @echo off
  2. echo Window XP
  3. for /l %%a in (1,1,80) do set /p=^<>nul
复制代码
这类批处理已经有前辈写过了,论坛搜索2K

[ 本帖最后由 defanive 于 2009-4-26 18:19 编辑 ]
作者: Batcher    时间: 2009-4-26 16:13     标题: 回复 3楼 的帖子

此处^1是多余的,可以删除。

========================

以上观点错误,是我没仔细看代码。为了便于阅读,也可以这样写:
ping 127.1 -n 1 >nul

关于批处理中的句柄,可以看考:批处理中的重定向符号以及句柄的使用方法和讲解
http://bbs.bathome.net/thread-3296-1-1.html

[ 本帖最后由 Batcher 于 2009-4-26 17:01 编辑 ]
作者: tireless    时间: 2009-4-26 16:15

  1. @echo off
  2. mode con lines=10 cols=50
  3. for /l %%a in (1 1 10) do (
  4.   set/p=  <nul
  5.   for /l %%a in (1 1 3) do (ping -n 1 127.1>nul & set/p=■<nul)
  6.   set/p=<nul
  7.   for /l %%a in (1 1 20) do (
  8.     set/p=■■■<nul
  9.     ping -n 1 127.1>nul
  10.     set/p=■  <nul
  11.   )
  12.   for /l %%a in (1 1 3) do (ping -n 1 127.1>nul & set/p=  <nul)
  13.   set/p=<nul
  14. )
复制代码

作者: yslyxqysl    时间: 2009-4-26 16:45

^1不是多余的,是指明一个数据包
作者: baiyuheitu    时间: 2009-4-26 17:21     标题: 回复 4楼 的帖子

你的代码遗漏了<号!
作者: baiyuheitu    时间: 2009-4-26 17:24     标题: 回复 4楼 的帖子

咋搜不到以前前辈写的这类批处理呢?我记得在其他地方模拟98 或其他系统滚动条的批处理,但现在找不到了!但不要>>>>>>>>>>>>>>>>>>>>>>>>这个滚动条的批处理!

[ 本帖最后由 baiyuheitu 于 2009-4-26 17:34 编辑 ]
作者: everest79    时间: 2009-4-27 02:11

  1. @ECHO OFF
  2. SET URL=www.sohu.com
  3. :TOP
  4. SET COL=
  5. SET/P=  <nul
  6. CALL :AUTOCOL
  7. GOTO TOP
  8. :AUTOCOL
  9. SET/A COL+=1
  10. TITLE=%0 PING %URL% %COL%
  11. PING %URL% -n 1 >nul
  12. IF %COL% LEQ 4 (
  13.     SET/P=■<nul
  14. )ELSE IF %COL% LEQ 38 (
  15.     SET/P=  ■■■■<nul
  16. )ELSE IF %COL% EQU 39 (
  17.     SET/P=  <nul
  18. )ELSE IF %COL% LEQ 42 (
  19.     SET/P=  <nul
  20. )ELSE GOTO :EOF
  21. CALL %0
  22. SET/P=<nul
  23. GOTO :EOF
复制代码

作者: inittab    时间: 2009-4-27 15:01

改一下四楼的代码:
  1. @echo off
  2. echo starting Window XP
  3. for /l %%a in (1,1,80) do set /p=^><nul&for /l %%a in (1,1,100) do type nul>nul
复制代码

作者: shqf    时间: 2009-4-29 14:14

有框的:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. mode con cols=61 lines=15 &color 07
  4. set "a= "
  5. for /L %%i in (1 1 29) do (
  6.     cls
  7.     echo.&echo.&echo.
  8.     echo                       Windows XP
  9.     echo.&echo.&echo.
  10.     echo ┌────────────────────────────┐
  11.     set "a=!a!■"&echo !a!
  12.     echo └────────────────────────────┘
  13.     for /L %%j in (1 1 1000) do echo %%j>nul
  14. )
  15. pause
复制代码

[ 本帖最后由 shqf 于 2009-4-29 14:16 编辑 ]
作者: baiyuheitu    时间: 2009-4-29 15:26     标题: 回复 12楼 的帖子

符合要求,但滑块是逐增的,要是走动的,就更好了!
作者: shqf    时间: 2009-4-29 16:27

稍修改了一下,成走动的:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. mode con cols=62 lines=15 &color 07
  4. set "a= "
  5. for /L %%i in (1 1 27) do (
  6.     cls
  7.     echo.&echo.&echo.
  8.     echo                       Windows XP
  9.     echo.&echo.&echo.
  10.     echo  ┌────────────────────────────┐
  11.     for /l %%j in (1 1 %%i) do (set /p=  <nul)
  12.     echo ■■■
  13.     echo  └────────────────────────────┘
  14.     for /L %%j in (1 1 1000) do echo %%j>nul
  15. )
  16. pause
复制代码

作者: baiyuheitu    时间: 2009-4-29 17:38     标题: 回复 14楼 的帖子

效果挺好,我现在有个疑问,不知道如何确定方框的长度,有时长度太短,滑块会出框,要是太长滑块有到不了框的边沿,很难看,应如何确定其长度???框左右无边界,要是有边界,就更不会确定长度了!
上述代码中你的echo 和第一个■的距离如何确定的??

[ 本帖最后由 baiyuheitu 于 2009-4-29 17:40 编辑 ]
作者: Batcher    时间: 2009-4-29 17:41     标题: 回复 15楼 的帖子

应该根据最外层那个for循环的次数来决定长度
作者: defanive    时间: 2009-5-1 23:21

  1. @echo off
  2. set "line=          ■■■          "
  3. for /l %%a in (13,-1,0) do (
  4. cls
  5. echo ┌──────────┐
  6. call echo │%%line:~%%a,10%%│
  7. echo └──────────┘
  8. ping -n 123>nul
  9. ping -n 123>nul
  10. )
  11. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2