标题: [游戏娱乐] 批处理以彩色输出你输入的字符 [打印本页]
作者: 基拉freedom 时间: 2009-8-23 09:21 标题: 批处理以彩色输出你输入的字符
在代码咨询区问了问题 但还是自己解决掉了 虽然办法很拙........
这个是要求输入的 等下会做个直接输入文件的...~ ~
好久没练手了 如果觉得做得差就提出来 好让我改正
http://hi.baidu.com/fair_jm是我空间- ::code by Fair_Jm@http://hi.baidu.com/fair_Jm
- @echo off&setlocal EnableDelayedExpansion
- title 彩色逐字输出您输入的字符 made by Fair_Jm
- color F8
- set /p z=输入一句话:
- :begin
- set /a x=%random%%%9+1
- set "o=!z:~0,1!"
- set o=!o:^<= !
- set o=!o:^>= !
- set o=!o:^.= !
- set o=!o:^|= !
- set o=!o:^&= !
- set o=!o:^:= !
- set o=!o:^\= !
- set o=!o:^/= !
- set o=!o:^"= !
- set o=!o:t= !
- if "!o!"==" " set /p= !z:~0,1!<nul&goto :next
- set /p= <nul>"!z:~0,1!" 2>nul&findstr /a:F!x! .* *!z:~0,1! 2>nul&del "!z:~0,1!" 2>nul
- :next
- set z=!z:~1!
- ping /n 1 127.1 >nul
- if defined z goto :begin
- pause>nul
- exit
复制代码
作者: 基拉freedom 时间: 2009-8-23 09:44
然后是输入文件的..在原基础上改很容易~ ~- ::code by Fair_Jm@http://hi.baidu.com/fair_Jm
- @echo off&setlocal EnableDelayedExpansion
- title 彩色逐字输出您文件内的字符 made by Fair_Jm
- color F8
- :new
- cls
- set op=jm
- set /p op=请将文本直接拖入:
- cls
- if "%op%"=="jm" echo 无文本&ping /n 2 127.1 >nul&goto new
- for /f "delims=" %%i in ('findstr /n .* "%op%"') do (
- set "z=%%i"
- setlocal enabledelayedexpansion
- set z=!z:*:=!
- call :begin
- endlocal
- echo.
- )
- echo.&echo.
- echo 显示完毕 按回车键重新开始
- pause>nul
- goto new
- :begin
- if not defined z (goto :eof)
- set /a x=%random%%%9+1
- set "o=!z:~0,1!"
- set o=!o:^<= !
- set o=!o:^>= !
- set o=!o:^.= !
- set o=!o:^|= !
- set o=!o:^&= !
- set o=!o:^:= !
- set o=!o:^"= !
- set o=!o:^\= !
- set o=!o:^/= !
- set o=!o:t= !
- if "!o!"==" " set /p= !z:~0,1!<nul&goto :next
- set /p= <nul>"!z:~0,1!" 2>nul&findstr /a:F!x! .* *!z:~0,1! 2>nul&del "!z:~0,1!" 2>nul
- :next
- set z=!z:~1!
- ping /n 1 127.1 >nul
- 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
- @echo off
- setlocal enabledelayedexpansion
- set num=10
- set str=#F89ABCDEF
- for %%a in (3E 21 22 3A 7C 2E 26 5E 3C) do (
- set /a num-=1
- call set color=%%str:~!num!,1%%
- call :ColorLine %%a 0!color! 000!num!
- )
- goto :eof
-
- :ColorLine
- set "var=A$_MOV,AH,09$_MOV,AL,%1$_MOV,BH,00$_"
- set "var=%var%MOV,BL,%2$_MOV,CX,%3$_INT,10$_"
- set "var=%var%INT,20$_$_g$_q$_"
- 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 [1;32m!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 |