Board logo

标题: [游戏娱乐] 批处理以彩色输出你输入的字符 [打印本页]

作者: 基拉freedom    时间: 2009-8-23 09:21     标题: 批处理以彩色输出你输入的字符

在代码咨询区问了问题 但还是自己解决掉了 虽然办法很拙........
这个是要求输入的 等下会做个直接输入文件的...~ ~
好久没练手了  如果觉得做得差就提出来 好让我改正
http://hi.baidu.com/fair_jm是我空间
  1. ::code by Fair_Jm@http://hi.baidu.com/fair_Jm
  2. @echo off&setlocal EnableDelayedExpansion
  3. title 彩色逐字输出您输入的字符 made by Fair_Jm
  4. color F8
  5. set /p z=输入一句话:
  6. :begin
  7. set /a x=%random%%%9+1
  8. set "o=!z:~0,1!"
  9. set o=!o:^<= !
  10. set o=!o:^>= !
  11. set o=!o:^.= !
  12. set o=!o:^|= !
  13. set o=!o:^&= !
  14. set o=!o:^:= !
  15. set o=!o:^\= !
  16. set o=!o:^/= !
  17. set o=!o:^"= !
  18. set o=!o:t= !
  19. if "!o!"==" " set /p= !z:~0,1!<nul&goto :next
  20. set /p= <nul>"!z:~0,1!" 2>nul&findstr /a:F!x! .* *!z:~0,1! 2>nul&del "!z:~0,1!" 2>nul
  21. :next
  22. set z=!z:~1!
  23. ping /n 1 127.1 >nul
  24. if defined z goto :begin
  25. pause>nul
  26. exit
复制代码

作者: 基拉freedom    时间: 2009-8-23 09:44

然后是输入文件的..在原基础上改很容易~ ~
  1. ::code by Fair_Jm@http://hi.baidu.com/fair_Jm
  2. @echo off&setlocal EnableDelayedExpansion
  3. title 彩色逐字输出您文件内的字符 made by Fair_Jm
  4. color F8
  5. :new
  6. cls
  7. set op=jm
  8. set /p op=请将文本直接拖入:
  9. cls
  10. if "%op%"=="jm" echo 无文本&ping /n 2 127.1 >nul&goto new
  11. for /f "delims=" %%i in ('findstr /n .* "%op%"') do (
  12.     set "z=%%i"
  13.     setlocal enabledelayedexpansion
  14.     set z=!z:*:=!
  15.     call :begin
  16.     endlocal
  17.     echo.
  18. )
  19. echo.&echo.
  20. echo 显示完毕 按回车键重新开始
  21. pause>nul
  22. goto new
  23. :begin
  24. if not defined z (goto :eof)
  25. set /a x=%random%%%9+1
  26. set "o=!z:~0,1!"
  27. set o=!o:^<= !
  28. set o=!o:^>= !
  29. set o=!o:^.= !
  30. set o=!o:^|= !
  31. set o=!o:^&= !
  32. set o=!o:^:= !
  33. set o=!o:^"= !
  34. set o=!o:^\= !
  35. set o=!o:^/= !
  36. set o=!o:t= !
  37. if "!o!"==" " set /p= !z:~0,1!<nul&goto :next
  38. set /p= <nul>"!z:~0,1!" 2>nul&findstr /a:F!x! .* *!z:~0,1! 2>nul&del "!z:~0,1!" 2>nul
  39. :next
  40. set z=!z:~1!
  41. ping /n 1 127.1 >nul
  42. goto :begin
复制代码

[ 本帖最后由 基拉freedom 于 2009-8-23 20:02 编辑 ]
作者: yslyxqysl    时间: 2009-8-23 10:01

似乎有特殊字符会出现神奇的现象...
楼主的原意可能是输出一个彩色空格再用特殊字符覆盖
但这样就把颜色信息一起抹杀了...
作者: 基拉freedom    时间: 2009-8-23 10:06

特殊字符可以输出 但是没有颜色 如果不是特殊字符 就以颜色输出 在电脑上测试过了 应该没问题了吧 也许是漏了几个特殊字符 出现问题的请提供下

特殊字符以颜色输出感觉好像不太可能.....用findstr必须建立文件 但文件名绝不可能是特殊字符 所以只好把特殊字符按原来的输出了 还有t这个字母(**t)这个也一定要按原来的输出
实际情况就变成这样了 汗....:
作者: yslyxqysl    时间: 2009-8-23 10:11

请注意缩小图片体积 节省论坛空间
作者: 基拉freedom    时间: 2009-8-23 10:19

不好意思 以后用png或gif...
作者: Batcher    时间: 2009-8-23 11:09

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num=10
  4. set str=#F89ABCDEF
  5. for %%a in (3E 21 22 3A 7C 2E 26 5E 3C) do (
  6.   set /a num-=1
  7.   call set color=%%str:~!num!,1%%
  8.   call :ColorLine %%a 0!color! 000!num!
  9. )
  10. goto :eof
  11. :ColorLine
  12. set "var=A$_MOV,AH,09$_MOV,AL,%1$_MOV,BH,00$_"
  13. set "var=%var%MOV,BL,%2$_MOV,CX,%3$_INT,10$_"
  14. set "var=%var%INT,20$_$_g$_q$_"
  15. echo exit|%ComSpec% /k prompt %var%|debug>nul
复制代码

作者: 基拉freedom    时间: 2009-8-23 11:11


楼上的代码是如何实现的 能发下地址或看看代码吗?
作者: zqz0012005    时间: 2009-8-23 11:15

http://www.cn-dos.net/forum/viewthread.php?tid=30382
作者: 基拉freedom    时间: 2009-8-23 11:51

不知是不是我哪里没有想明白......
command /cecho !z:~0,1! 貌似不支持变量?? 还有用的是echo 除非全部在同一行用[ 否则会换行?就不能有逐字输出的效果......
先说说想法
我再去想想
作者: 基拉freedom    时间: 2009-8-23 12:07

还有我在cn-dos那里复制了代码 把里面的一些字母改成<或者^<均无法显示 难道这个command /cecho不支持吗?
作者: hnqx    时间: 2010-4-15 23:34

试了下,发现有些字母会很神奇响 你试试: Windows XP
作者: sig13    时间: 2010-4-18 16:48

难道我眼花了?
我复制了1楼的文件,执行的时候拖入文件名
我拖入这个批处理,结果执行完了,我整个目录下的文件都被删光了。。。
作者: sig13    时间: 2010-4-18 17:35

for /f "delims=" %%i in ('findstr /n .* "%op%"') do (
这句有问题,只要text里面有这句,就傻了
会有执行”findstr /n .* *“输出打印出来,为什么呢?
神啊
作者: sig13    时间: 2010-4-18 17:45

我明白了,是星号惹的祸。
如果text文件里面有星号,几个星号就傻几次。
会把星号当普通字符,建名字为星号的文件,当然会建文件失败,findstr当然不会失败,删的时候就狠了,问一句莫名其妙的yes or no,yes就全删了。
作者: sig13    时间: 2010-4-18 17:57

不过我还是不很明白,特别是特殊字符处理那一段。那个高手讲讲为什么啊?




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