单行显示多种颜色字符的批处理
[color=Red]【注】本文中的代码依赖于XP等老系统里面的debug命令,Win10等新系统可以用其它更简单的方法:[/color][url]http://bbs.bathome.net/thread-60616-1-1.html#pid247814[/url]
代码功能: 实现纯批处理在单行显示不同颜色的彩色字符功能,并且不影响相临行文字的颜色值。
实现意义: 不调用非微软第三方工具实现、不生成任何临时文件。
实现价值: 没任何实用价值,纯为技术而挑战看上去不可能的技术。
实现版本: 稍微修改后均可以在CMD与MS-DOS版本上实现同样功能。
关于注释: 下面代码只是显示一堆字符而已,只为思考想法的可实现性。
如果用于显示特殊文字内容,下个版本可以随意完成,此演示无效。
测试版本: Windows CMD Shell 非全屏模式/全屏模式
目前不支持纯DOS,因为命令行过长所至,除非使用 Debug E命令直接写内存减少命令长度[code]@echo off
:: 显示单行彩色字符,其色彩值不影响本行以外的任何行
::
:: Var Redtek 2006 - bbs.cn-dos.net
set "var=A$_MOV,AH,09$_MOV,AL,2A$_MOV,BH,00$_MOV,BL,0E$_MOV,CX,0020$_INT,10$_"
set "var=%var%MOV,BL,0A$_MOV,CX,000A$_INT,10$_INT,20$_$_g$_q$_"
echo exit|%ComSpec% /k prompt %var%|debug>nul[/code][运行方法: 先进入CMD以后,再输入这个批处理的名字运行。]
[ 如果在桌面直接鼠标双击运行,则一闪而过不会显示彩色内容]
上面代码没有任何实用价值,这也是偶然间想“挑战”一下那些调用第三方工具才能实现的功能,就想思考那些看上去不可能的事,
以上代码纯属思考着玩的一个想法,贴上和大家一起分享好玩的东东~:)
原帖地址:[url]http://www.cn-dos.net/forum/viewthread.php?tid=25797[/url] 试过了!!!
不行~~~
回复 2楼 的帖子
请列出测试用例、测试环境、测试结果。但凭“不行”二字,恐怕观音姐姐来了也帮不上你。 请教楼主一个关于变色的问题:
我在论坛中看了相关的帖:
[url=http://bathome.net/viewthread.php?tid=629&highlight=%B1%E4%C9%AB]http://bathome.net/viewthread.php?tid=629&highlight=%B1%E4%C9%AB[/url]
自己也写了一个变色的代码:
[code]@echo off
:1123
setlocal enabledelayedexpansion
set a=123456789abcfe
set p=!random!%%14+1
color 3!a:~%p%,1!
echo @@@@@@@@@@@
goto 1123
[/code]
但运行后显示:
[color=red]设置默认的控制台前景和背景颜色。[/color]
[color=red]COLOR [attr][/color]
[color=red] attr 指定控制台输出的颜色属性[/color]
[color=red]颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为
前景。每个数字可以为以下任何值之一:[/color]
[color=red] 0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色[/color]
[color=red]如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台窗口、/T 开关或
DefaultColor 注册表值。[/color]
[color=red]如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令
请按任意键继续. . .[/color]
问题出在哪?
[[i] 本帖最后由 kingerpk 于 2009-2-7 23:07 编辑 [/i]]
回复 4楼 的帖子
第五行,涉及到数值计算时,应使用 set /a 这是个好东东。测试通过。
问题是它和DOS下使用ANSI.sys显示彩色字体有什么区别呢?
我试过ANSI在WINPE2。0环境不能运行以外,其他WIN2000以上环境都可以
在WINPE2。0下把COMMAND.COM文件拷贝到WINDOWS\system32下也不行,闷。。。 我试过了,是绿颜色和黄色*号
回复 7楼 的帖子
可以改成自己喜欢的颜色 debug 这个命令,确定在win764位中不存在,对吗? [b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=159148&ptid=1854]9#[/url] [i]慕夜蓝化[/i] [/b]是的[img]http://bbs.bathome.net/images/smilies/default/smile.gif[/img] 运行错误,图片传不上来。。 [b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=251619&ptid=1854]11#[/url] [i]TAT[/i] [/b]
试试这个:
[url]http://bbs.bathome.net/thread-60616-1-1.html#pid247814[/url] [b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=251632&ptid=1854]12#[/url] [i]Batcher[/i] [/b]
成了成了,厉害哇,学习学习,非常感谢!!:lol :lol [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=251632&ptid=1854]12#[/url] [i]Batcher[/i] [/b]
关于12楼中链接的代码,运行逻辑懂了,大部分也看懂并理解了,but仍然有一些不太明白,还望不吝赐教!
·1.
set '=!%让叹号的变量最后才解开%
这句是把单引号设置为感叹号???十分迷茫这句。。
·2.
for /F "tokens=1 delims=#" %%a in ('"prompt #$E# & echo on & for %%b in (1) do rem"') do set "ESC=%%a"
这句我知道是把ESC那个特殊字符表示出来了,是个灵魂操作,不过in里面那串实在是看不懂。。好迷茫啊。。
·3.
贴出的查阅文章实在如获至宝,关键的东西都有了,完美!! [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=251632&ptid=1854]12#[/url] [i]Batcher[/i] [/b]
想再追问一个其他的,如果知道的话还望不吝赐教。。
就是用Python写一个小应用,有界面(目前用PyQt5做的),有一些简单功能,但是打包体积会很离谱,
也在网上多方查阅过相关资料,但结果都不太理想。。如果您也恰好有这方面经验的话还望不吝赐教!!
页:
[1]