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