Board logo

标题: 批处理实现 “霓虹灯” 效果 [打印本页]

作者: youxi01    时间: 2008-1-2 11:13     标题: 批处理实现 “霓虹灯” 效果

该效果本人也没去尝试过(因为没接触过批处理中 彩色字符 的实现代码),至于代码编写的可行性我也不知道...

至于所谓的 霓虹灯 效果可以这样解释(比较粗陋的霓虹灯效果),举例说明:
假设有这样的一段字符串(黑底红字):批处理之家bbs.bathome.net
然后第一个字符 批 变为白色,其它的仍为:红色;
再接下来:第二个字符 处 为白色,其它的仍为:红色;
依次类推,形成类 霓虹灯 的效果.
作者: 随风    时间: 2008-5-11 21:32

参照cn-dos此帖
http://www.cn-dos.net/forum/viewthread.php?tid=39727###
利用临时文件和findstr /a 参数。
若是想显示字母的话,则所有显示字母都必须是合法的文件名。
  1. @echo off&echo.&echo.&color 0c
  2. ::code 随风 @bbs.bathome.net 2008-0511
  3. set /p= <nul>●
  4. for /l %%a in (1 1 30) do (
  5.    call set str=●%%str%%
  6.    call set t=%%t%%
  7. )
  8. set /p=       %str%<nul
  9. set /p=%t%<nul
  10. for %%a in (a b c d e f) do (
  11.    setlocal
  12.    call :loop %%a
  13.    endlocal
  14. )
  15. pause>nul&exit
  16. :loop
  17. set wjm=%str:~0,1%
  18. if "%str:~1%"=="" (set bu= ) else set bu=●
  19. findstr /a:%1 .* ●*
  20. set /p=%bu%<nul
  21. for /l %%a in (1 1 100) do ver>nul
  22. set str=%str:~1%
  23. if defined str goto loop
  24. set /p=%t%<nul
  25. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-5-11 21:34 编辑 ]
作者: 随风    时间: 2008-5-11 22:42

再来个,最烂的霓虹灯。
  1. @echo off&echo.&echo.&color 0c
  2. ::code 随风 @bbs.bathome.net 2008-0511
  3. set /p= <nul>●
  4. for /l %%a in (1 1 30) do (
  5.    call set str=●%%str%%
  6.    call set t=%%t%%
  7. )
  8. set /p=       %str%<nul
  9. set /p=%t%<nul
  10. set ys=abcdefa
  11. setlocal EnableDelayedExpansion
  12. for %%a in (a b c d e f) do (
  13.    set /a m+=1&call set b2=%%ys:~!m!,1%%
  14.    call :loop %%a !b2!
  15. )
  16. pause>nul&exit
  17. :loop
  18. set /a n+=1,h+=1
  19. if "%str:~1%"=="" (set bu= ) else set bu=●
  20. findstr /a:%1 .* ●*
  21. set /p=%bu%<nul
  22. if %n% geq 5 call :list %1 %2 %2&set n=2
  23. title %2
  24. set str=%str:~1%
  25. if %h% lss 30 goto loop
  26. set /p=%t%<nul
  27. set /a h=0,n=0
  28. goto :eof
  29. :list
  30. if "%2"=="" goto :eof
  31. set /p=<nul
  32. findstr /a:%2 .* ●*
  33. set /p=%bu%<nul
  34. findstr /a:%1 .* ●*
  35. set /p=%bu%<nul
  36. findstr /a:%1 .* ●*
  37. set /p=%bu%<nul
  38. findstr /a:%1 .* ●*
  39. set /p=%bu%<nul
  40. findstr /a:%1 .* ●*
  41. set /p=%bu%<nul
  42. shift
  43. goto list
复制代码

作者: 随风    时间: 2008-5-12 14:36

再来一个
  1. @echo off&echo.&echo.&color 0c
  2. set _1=●&set "_2=●●"
  3. set /p= <nul>●
  4. copy /y ● ●● >nul
  5. set ys=abdef123456789
  6. ::code 随风 @bbs.bathome.net 2008-0511
  7. for /l %%a in (1 1 30) do (
  8.    call set str=●%%str%%
  9.    call set t=%%t%%
  10. )
  11. set /p=       %str%<nul
  12. :loop
  13. set /a n=%random%%%27+3,w=%random%%%2+1,m=n-4+w,h=%random%%%14,h2=(h2+1)%%10
  14. call set y=%%ys:~%h%,1%%
  15. call set w=%%_%w%%%
  16. for /l %%a in (1 1 %n%) do set /p=<nul
  17. findstr /a:%y% . %w%*
  18. for /l %%a in (1 1 %m%) do set /p=●<nul
  19. for /l %%a in (1 1 500) do ver>nul
  20. if %h2% geq 5 (color 0c) else color 0%y%
  21. goto loop
复制代码

作者: youxi01    时间: 2008-5-12 18:53

还有点小问题,测试便知
作者: 随风    时间: 2008-5-12 19:16

哦?
4 楼的吗?我测试没问题啊?
作者: youxi01    时间: 2008-5-12 21:32

呵呵,没事了,似乎是原来的感觉错误,呵呵,不好意思
作者: gavincwb    时间: 2008-5-21 04:33

不是很清楚
只有慢慢来学习了
作者: aa779    时间: 2008-6-15 10:46

开眼界了,原来可以这样弄,如果能想霓虹灯广告那样,那就好看了
作者: batman    时间: 2008-6-21 15:03

我也来一个,以前写的:
  1. @echo off&mode con cols=41 lines=5
  2. title 权当打发无聊的小动画
  3. set a=★&set b=☆&set c=0123456789abcdef
  4. echo.&echo.
  5. :begin
  6. set /a n=%random%%%20+1,m=40-2*n,x=%random%%%16
  7. call,color 1%%c:~%x%,1%%
  8. for /l %%i in (1,1,20) do set /p=%b%<nul&ping /n 127.1>nul
  9. for /l %%i in (1,1,100) do set /p=<nul
  10. for /l %%i in (1,1,%m%) do set /p= <nul&ping /n 127.1>nul
  11. for /l %%i in (1,1,%n%) do set /p=%a%<nul&ping /n 127.1>nul
  12. for /l %%i in (1,1,100) do set /p=<nul
  13. goto begin
复制代码

作者: batman    时间: 2008-6-21 15:08

再来个更小型的:
  1. @echo off&mode con cols=30 lines=5
  2. echo.&echo.
  3. :begin
  4. set str=bbs.bathome.net&set b=123456789abcdef
  5. set /a a=%random%%%14
  6. call,color 1%%b:~%a%,1%%
  7. call,set var=%%str:~%a%,1%%
  8. call,set str=%%str:%var%= %%
  9. set /p=       %str%<nul
  10. for /l %%i in (1,1,1000) do set /p=<nul
  11. goto begin
复制代码

作者: 杨风    时间: 2008-6-21 15:17

哇哦~~~TI is beautiful  ~~~~~~
作者: yyyxlxq    时间: 2008-6-23 17:18     标题: 倒地!

被你这个东东搞挂机了
作者: w156445045    时间: 2008-6-26 13:07

好东西啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: cfish09    时间: 2008-6-27 22:16

不错 哦xxi kl
作者: yrg27    时间: 2008-7-27 09:20

看不懂。。。。慢慢来。
作者: Clark2505    时间: 2008-8-5 23:37

看不懂。。。。
哪位大大给讲解一下??
作者: Clark2505    时间: 2008-8-6 10:26

原帖由 batman 于 2008-6-21 03:03 PM 发表
我也来一个,以前写的:@echo off&mode con cols=41 lines=5
title 权当打发无聊的小动画
set a=★&set b=☆&set c=0123456789abcdef
echo.&echo.
:begin
set /a n=%random%%%20+1,m=40-2*n,x=%random%%%16
ca ...
  1. call,color 1%%c:~%x%,1%%
复制代码
为什么一定要用 call?
call, 是什么用法??
哪里有讲解 call 用法的??
作者: bmwyy2008    时间: 2008-8-8 09:50     标题: 呵呵

10楼有的地方还是看不懂,能给解释一下吗?
作者: kennywang    时间: 2008-8-9 16:25

感觉挺好玩的。就是现在我不会啊。
作者: 都市浪子666    时间: 2008-8-9 17:17

厉害,真漂亮。郁闷的是,偶看不懂那些代码,
作者: xouou_53320    时间: 2008-8-14 00:29

来学习学习   很好看的灯
作者: chxrsq1987    时间: 2008-8-16 15:08

哇,太牛了。~~~~~~
作者: westsky    时间: 2008-8-16 21:41

用call 命令调用  color 颜色命令
你在这个批处理的 call  命令前加上:: 2个冒号
保存后你一看就明白了
call 还可以调用另一个批处理命令,格式:
call a.bat  表示 调用 a这个批处理
这是一个菜鸟的解释,有不对的地方  别拿鸡蛋扔我
作者: yslyxqysl    时间: 2008-8-29 21:31

那如何在同一行内显示不同颜色的字符,并不产生临时文件?
作者: jestso    时间: 2008-8-30 23:50

好好好好好好好好好好好好好好好好
作者: jytn    时间: 2008-10-26 07:54

今天算开眼界了。。。
作者: ljl    时间: 2008-12-1 12:33

都是高手啊就我一个人不会了
作者: ahongguo    时间: 2009-1-2 18:26

一开始看  那是一头雾水啊  
但是看了 11楼 那哥们做的  似乎懂得了
哈哈
作者: qqqtantan    时间: 2009-1-6 21:11     标题:

不错哦    学习了
作者: cbw1982    时间: 2009-1-31 23:16

恩,很不错的东东,开眼了
作者: a5417871    时间: 2009-3-31 05:17

我什么时候能把批处理玩到这种境界呢。。。阿门
作者: hdw    时间: 2009-8-5 15:27     标题: 解释一下

::一个“  ”为一个退格,使不同颜色字符换色时从当前行首开始重新载入(消除原来存在的字符)
::一个“”为一个退格,使不同颜色字符换色时从当前行首开始重新载入(不消除原来存在的字符)
作者: hdw    时间: 2009-8-5 15:28

以上解释不知道对不对。这是通过一系列试验得到的
作者: hdw    时间: 2009-8-5 15:30

findstr /a:4 .* "●*"是在当前光标下显示一个指定颜色的字符(以文件形式存在,可以被指定颜色)
作者: hdw    时间: 2009-8-5 17:26     标题: 解释 修改 一下

  1. @echo off&mode con cols=41 lines=5
  2. title 动画
  3. set a=★&set b=☆&set c=0123456789abcdef
  4. echo.
  5. echo        edit by hdw 2009-8-5
  6. echo.
  7. :begin
  8. set /a n=%random%%%20+1,m=40-2*n,x=%random%%%16
  9. call,color 0%%c:~%x%,1%%
  10. for /l %%i in (1,1,20) do set /p=%b%<nul&ping>nul
  11. for /l %%i in (1,1,20) do set /p=<nul
  12. for /l %%i in (1,1,8) do set /p= <nul&ping>nul
  13. for /l %%i in (1,1,12) do set /p=%a%<nul&ping>nul
  14. for /l %%i in (1,1,20) do set /p=<nul
  15. goto begin
  16. ::加“&ping>null”起到了延时的作用
  17. ::★占两个退格符位或空格位
  18. ::一个退格符加一个空格符可以把光标前一个字符删除
复制代码

作者: joker    时间: 2009-10-6 11:27

效果很好啊
各位大侠辛苦了
作者: lianjl    时间: 2010-5-16 17:15

It is beautiful!
作者: kacos999    时间: 2010-5-17 02:19     标题: 真厲害!!

从没想过能这样做呢
真大开了眼界!!




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