标题: [其他] [已解决]批处理模拟XP系统开机滚动条 [打印本页]
作者: baiyuheitu 时间: 2009-4-26 13:47 标题: [已解决]批处理模拟XP系统开机滚动条
更新:我想要的具有如图所示效果,但一摸一样有点困难,要求保留文字和滚动部分外面的方框!
[attach]1219[/attach]
原来部分:如何制作一批处理,模拟xp系统开机滚动条,百思不得其解,我只会简单的制作一个只有走动块的走动条,且代码很差劲,如下:-
- @echo off
- mode con lines=10 cols=50
- title 滑动块演示!
- :1
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- echo ■■■
- ping 127.1 -n 1 >nul&&cls
- set /a n+=1
- if %n% lss 4 goto 1
- pause >nul
复制代码
[ 本帖最后由 baiyuheitu 于 2009-4-29 21:14 编辑 ]
作者: yslyxqysl 时间: 2009-4-26 13:59
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- mode con lines=10 cols=50
- title 滑动块演示!
- for /l %%i in (1 1 4) do (
- set str=■■■
- for /l %%j in (1 1 22) do (
- echo !str!
- ping 127.1 -n ^1>nul
- cls
- set "str= !str!"
- )
- )
- pause>nul
复制代码
作者: baiyuheitu 时间: 2009-4-26 14:52 标题: 回复 2楼 的帖子
不错,我想按照现实中的windows xp系统的开机滚动条进行设计,该如何做?ping 127.1 -n ^1>nul 这句命令中的 ^1是啥意思?
作者: defanive 时间: 2009-4-26 16:09
简易版:- @echo off
- echo Window XP
- 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
- @echo off
- mode con lines=10 cols=50
-
- for /l %%a in (1 1 10) do (
- set/p= <nul
- for /l %%a in (1 1 3) do (ping -n 1 127.1>nul & set/p=■<nul)
- set/p=<nul
-
- for /l %%a in (1 1 20) do (
- set/p=■■■<nul
- ping -n 1 127.1>nul
- set/p=■ <nul
- )
-
- for /l %%a in (1 1 3) do (ping -n 1 127.1>nul & set/p= <nul)
- set/p=<nul
- )
复制代码
作者: 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
- @ECHO OFF
- SET URL=www.sohu.com
- :TOP
- SET COL=
- SET/P= <nul
- CALL :AUTOCOL
- GOTO TOP
-
- :AUTOCOL
- SET/A COL+=1
- TITLE=%0 PING %URL% %COL%
- PING %URL% -n 1 >nul
- IF %COL% LEQ 4 (
- SET/P=■<nul
- )ELSE IF %COL% LEQ 38 (
- SET/P= ■■■■<nul
- )ELSE IF %COL% EQU 39 (
- SET/P= <nul
- )ELSE IF %COL% LEQ 42 (
- SET/P= <nul
- )ELSE GOTO :EOF
- CALL %0
- SET/P=<nul
- GOTO :EOF
复制代码
作者: inittab 时间: 2009-4-27 15:01
改一下四楼的代码:- @echo off
- echo starting Window XP
- 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
有框的:- @echo off
- setlocal enabledelayedexpansion
- mode con cols=61 lines=15 &color 07
- set "a= "
- for /L %%i in (1 1 29) do (
- cls
- echo.&echo.&echo.
- echo Windows XP
- echo.&echo.&echo.
- echo ┌────────────────────────────┐
- set "a=!a!■"&echo !a!
- echo └────────────────────────────┘
- for /L %%j in (1 1 1000) do echo %%j>nul
- )
- pause
复制代码
[ 本帖最后由 shqf 于 2009-4-29 14:16 编辑 ]
作者: baiyuheitu 时间: 2009-4-29 15:26 标题: 回复 12楼 的帖子
符合要求,但滑块是逐增的,要是走动的,就更好了!
作者: shqf 时间: 2009-4-29 16:27
稍修改了一下,成走动的:- @echo off
- setlocal enabledelayedexpansion
- mode con cols=62 lines=15 &color 07
- set "a= "
- for /L %%i in (1 1 27) do (
- cls
- echo.&echo.&echo.
- echo Windows XP
- echo.&echo.&echo.
- echo ┌────────────────────────────┐
- for /l %%j in (1 1 %%i) do (set /p= <nul)
- echo ■■■
- echo └────────────────────────────┘
- for /L %%j in (1 1 1000) do echo %%j>nul
- )
- 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
- @echo off
- set "line= ■■■ "
- for /l %%a in (13,-1,0) do (
- cls
- echo ┌──────────┐
- call echo │%%line:~%%a,10%%│
- echo └──────────┘
- ping -n 123>nul
- ping -n 123>nul
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |