Board logo

标题: 时钟--斜体+毫秒(更新,减少cpu和闪烁) [打印本页]

作者: 523066680     时间: 2008-7-28 11:13    标题: 时钟--斜体+毫秒(更新,减少cpu和闪烁)


@echo off
title made by 523066680 2008-08-08
::这一版本由www.cn-dos.net & www.bathome.cn 成员523066680编辑
setlocal enabledelayedexpansion
color 0a
set 01=●●●●
set 02=●    ●
set 03=●    ●
set 04=●    ●
set 05=●●●●
set 11=   ●   
set 12=   ●   
set 13=   ●   
set 14=   ●   
set 15=   ●   
set 21=●●●●
set 22=      ●
set 23=●●●●
set 24=●      
set 25=●●●●
set 31=●●●●
set 32=      ●
set 33=●●●●
set 34=      ●
set 35=●●●●
set 41=●    ●
set 42=●    ●
set 43=●●●●
set 44=      ●
set 45=      ●
set 51=●●●●
set 52=●      
set 53=●●●●
set 54=      ●
set 55=●●●●
set 61=●●●●
set 62=●      
set 63=●●●●
set 64=●    ●
set 65=●●●●
set 71=●●●●
set 72=      ●
set 73=      ●
set 74=      ●
set 75=      ●
set 81=●●●●
set 82=●    ●
set 83=●●●●
set 84=●    ●
set 85=●●●●
set 91=●●●●
set 92=●    ●
set 93=●●●●
set 94=      ●
set 95=●●●●
:a
for /f %%a in ('time /t') do set t0=%%a&set /a t1=!t0:~0,1!,t2=!t0:~1,1!
for /l %%a in (1,1,5) do (
set hang%%a=!%t1%%%a! !%t2%%%a!  + !%time:~3,1%%%a! !%time:~4,1%%%a!  + !%time:~6,1%%%a! !%time:~7,1%%%a!
)
ping -n 1 -w 500 0.0.0.1>nul
cls
echo,
echo,
echo,   %hang1%
echo,    %hang2%
echo,     %hang3%
echo,      %hang4%
echo,       %hang5%
echo,
goto :a
[ Last edited by 523066680 on 2008-8-16 at 11:09 AM ]
作者: radem     时间: 2008-7-28 11:40
不错~赞个..
作者: bat-zw     时间: 2008-7-28 12:09
效果还是可以,但语气。。。。建议楼主修改下标题。。。

[ Last edited by bat-zw on 2008-7-28 at 12:10 PM ]
作者: HAT     时间: 2008-7-28 13:29
"无语"体现在什么地方?
作者: 523066680     时间: 2008-7-28 14:18
真不好意思 。题目已经改啦 ……无语是这样子的……
在某个部分的字符,我不小心打错了……结果就变成这样子了
对我而言 这是喜出望外啊

我年轻 我狂妄 我自大 我该改改了

[ Last edited by 523066680 on 2008-7-28 at 02:29 PM ]
作者: luowei14     时间: 2008-7-28 18:07
....牛。。学习了!
作者: dslz666     时间: 2008-7-29 17:28
厉害,真漂亮。什么时候我能达到这种水平就好了
作者: eech     时间: 2008-8-15 00:27
这个要顶,很漂亮,学习下
作者: jy02116916     时间: 2008-8-15 11:40
LZ能解释下那个for命令是怎么调用前边的变量吗。。实在看不大懂
作者: 523066680     时间: 2008-8-15 16:41
这个问题……没看懂……是不是在问 “变量延迟”啊?提到这个名词我就怕……
还是要有个人的理解的好。
我知道这些:
set n=1
可以直接在for中获得变量n
for %%a in (test) do echo %n%
然而 在for之中建立的变量,要再次在for中使用,就要启用
setlocal enabledelayedexpansion (又是名词--启用变量延迟……)
然后例子是
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1,1,10) do (
set /a  n=%%a+%%a
echo !n!
)
pause
这个时候变量的表示方法是!ver!  可以改成echo %n% 试下结果

假如这个for的前面没有加setlocal enabledelayedexpansion
还有一个例子也能成功
@echo off
for /l %%a in (1,1,10) do (
set /a n=%%a+%%a
call,echo,%%n%%
)
pause
顶楼代码中  for中用到了两个变量。但是交错了
像for中的这段set hang%%a=!zero:~0,%%a!
假如不启用变量延迟,变量表示是用:set hang%%a=%zero:~0,%%a%
看到了什么?很多百分号,系统会难以区分,于是启用变量延迟,用百分号和
感叹号 达到区分的作用。(只是个人见解)

当然还有别的用途,for和 if 等都是复合语句,用一个例子表示
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1,1,10) do (
echo  %time%  !time!

ping -n 1 127.1>nul
)
pause
看到了什么?
这就是!! 和%%的其中一个区别(晕 语言表达不好……看不清楚就多测试
多找代码)

貌似可以这样解释:在复合语句中(同一句),变量始终代表初始值,在
这个句子中做的改变,要在下一句才能得到体现。
但可以通过变量延迟改变这个。用例子表示:
@echo off
setlocal enabledelayedexpansion
set n=0
set /a n+=1 &echo %n% &echo !n!
::上面的句子虽然用了&但始终是同一句,%n%还是代表句子前面建立的n.!n!会是+1后的n
echo %n%
::这是下一句,%n%已经是改变后的了。
pause
[ Last edited by 523066680 on 2008-8-15 at 04:52 PM ]
作者: HAT     时间: 2008-8-15 16:57


  Quote:
很多百分号,系统会难以区分,于是启用变量延迟,用百分号和
感叹号 达到区分的作用。

就算有再多的百分号,系统也很容易区分。只是系统不会以我们普通想象的那样区分("逃逸"或者"脱逃"似乎更合适),感叹号不是为了便于区分吧,取决于变量延迟扩展的机制。
作者: 523066680     时间: 2008-8-15 17:09
顶!hat~(你在群里是个超级冷酷的人……基本不说话)

这样子啊……原来如此
我的想法比较简单,我的简单想法是这样形成的:
set a=1
set n1=hehe
echo %n%a%%
不能成功显示
但XX延迟后
echo !n%a%!能成功显示……直接的让我觉得 在此处
!!是用来区分%%的

再次注解 上面我的话不是官方说明……

[ Last edited by 523066680 on 2008-8-15 at 05:15 PM ]
作者: BC     时间: 2008-8-15 17:49
加了毫秒cpu很高...
建议去掉,减少ping数
作者: 523066680     时间: 2008-8-15 20:24
减啦  而且还减少了闪烁
用得是:ping -n 1 -w 500 0.0.0.1>nul
在willsort的文章学的 真不错!
http://www.cn-dos.net/forum/view ... ghlight=%2Bwillsort
作者: BC     时间: 2008-8-15 20:48
ok,加分!
作者: crazysakura     时间: 2008-8-16 01:27
太神奇了,,,如果能是正的,就好了
作者: 523066680     时间: 2008-8-16 08:00
哈,给做成屏保 和整体的吧
@echo off
echo exit|%ComSpec% /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_|debug>nul
title made by 523066680 2008-08-08
::这一版本由www.cn-dos.net & www.bathome.cn 成员523066680编辑
setlocal enabledelayedexpansion
set n=-1
for %%a in (1 2 3 5 9 a b c d e f) do (set /a n+=1 &set n!n!=%%a)
set 01=●●●●
set 02=●    ●
set 03=●    ●
set 04=●    ●
set 05=●●●●
set 11=   ●   
set 12=   ●   
set 13=   ●   
set 14=   ●   
set 15=   ●   
set 21=●●●●
set 22=      ●
set 23=●●●●
set 24=●      
set 25=●●●●
set 31=●●●●
set 32=      ●
set 33=●●●●
set 34=      ●
set 35=●●●●
set 41=●    ●
set 42=●    ●
set 43=●●●●
set 44=      ●
set 45=      ●
set 51=●●●●
set 52=●      
set 53=●●●●
set 54=      ●
set 55=●●●●
set 61=●●●●
set 62=●      
set 63=●●●●
set 64=●    ●
set 65=●●●●
set 71=●●●●
set 72=      ●
set 73=      ●
set 74=      ●
set 75=      ●
set 81=●●●●
set 82=●    ●
set 83=●●●●
set 84=●    ●
set 85=●●●●
set 91=●●●●
set 92=●    ●
set 93=●●●●
set 94=      ●
set 95=●●●●
:a
for /f %%a in ('time /t') do (set to=%%a &set /a t1=!to:~0,1!,t2=!to:~1,1!)
for /l %%a in (1,1,5) do (
set hang%%a=!%t1%%%a! !%t2%%%a!    !%time:~3,1%%%a! !%time:~4,1%%%a!    !%time:~6,1%%%a! !%time:~7,1%%%a!)
if %random:~-1% leq 6 (set /a n=!random:~-1!*2) else (set n=!random:~-1!)
set k=
for /l %%a in (1,1,%random:~-1%) do (set k=  !k!)
ping -n 1 -w 500 0.0.0.1>nul &cls
color 0!n%random:~-1%!
for /l %%a in (1,1,%n%) do echo,
echo,%k%%hang1%
echo,%k%%hang2%
echo,%k%%hang3%
echo,%k%%hang4%
echo,%k%%hang5%
goto :a
[ Last edited by 523066680 on 2008-8-16 at 10:18 AM ]
作者: BC     时间: 2008-8-16 19:13
不错
作者: uiopuiop     时间: 2009-5-29 12:41    标题: 我也来个,低CPU消耗


@echo off
title Clock
mode con cols=85 lines=14
color 0a
:start
echo.&echo.
banner.exe  " %time:~0,-3%" -c:@
ping 127.1 -n 2 >nul &ping -n>nul
cls
goto start
附件 1: clock.zip (2009-5-29 12:41, 10.74 K,下载次数: 5)

作者: tongzj     时间: 2009-5-29 23:50
不错,正好需要,学习了。
改了一个非斜体的。

@echo off
setlocal enabledelayedexpansion
title 时钟
mode con cols=55 lines=7
color 0a
set 01=▉▉▉
set 02=▉  ▉
set 03=▉  ▉
set 04=▉  ▉
set 05=▉▉▉
set 11=  ▉ 
set 12=  ▉ 
set 13=  ▉ 
set 14=  ▉ 
set 15=  ▉ 
set 21=▉▉▉
set 22=    ▉
set 23=▉▉▉
set 24=▉  
set 25=▉▉▉
set 31=▉▉▉
set 32=    ▉
set 33=▉▉▉
set 34=    ▉
set 35=▉▉▉
set 41=▉  ▉
set 42=▉  ▉
set 43=▉▉▉
set 44=    ▉
set 45=    ▉
set 51=▉▉▉
set 52=▉  
set 53=▉▉▉
set 54=  ▉
set 55=▉▉▉
set 61=▉▉▉
set 62=▉  
set 63=▉▉▉
set 64=▉  ▉
set 65=▉▉▉
set 71=▉▉▉
set 72=    ▉
set 73=    ▉
set 74=    ▉
set 75=    ▉
set 81=▉▉▉
set 82=▉  ▉
set 83=▉▉▉
set 84=▉  ▉
set 85=▉▉▉
set 91=▉▉▉
set 92=▉  ▉
set 93=▉▉▉
set 94=    ▉
set 95=▉▉▉
:a
for /f %%a in ('time /t') do set t0=%%a&set /a t1=!t0:~0,1!,t2=!t0:~1,1!
for /l %%a in (1,1,5) do (set hang%%a=!%t1%%%a! !%t2%%%a!   +   !%time:~3,1%%%a! !%time:~4,1%%%a!   +   !%time:~6,1%%%a! !%time:~7,1%%%a!)
choice /c yn /t 1 /d y>nul
cls
echo.
echo %hang1%
echo %hang2%
echo %hang3%
echo %hang4%
echo %hang5%
goto a
作者: yzdocean     时间: 2009-5-30 00:11
很经典的例子,谢谢分享!
作者: gudou     时间: 2011-1-4 12:58
厉害啊,不过20楼的代码闪屏太厉害
作者: acaigg     时间: 2011-1-6 21:48
加分以示支持.........
作者: sdlwsch     时间: 2011-1-7 16:35
都是牛人!!