批处理之家's Archiver

Batcher 发表于 2008-9-16 15:17

单行显示多种颜色字符的批处理

[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]

too_lazy 发表于 2008-12-9 18:07

试过了!!!
不行~~~

Batcher 发表于 2008-12-9 20:35

回复 2楼 的帖子

请列出测试用例、测试环境、测试结果。
但凭“不行”二字,恐怕观音姐姐来了也帮不上你。

kingerpk 发表于 2009-2-7 21:39

请教楼主一个关于变色的问题:
我在论坛中看了相关的帖:
[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]]

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

[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]

TAT 发表于 2022-2-15 20:01

运行错误,图片传不上来。。

Batcher 发表于 2022-2-15 23:07

[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]

TAT 发表于 2022-2-16 19:33

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=251632&ptid=1854]12#[/url] [i]Batcher[/i] [/b]


    成了成了,厉害哇,学习学习,非常感谢!!:lol :lol

TAT 发表于 2022-2-18 19:59

[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.
贴出的查阅文章实在如获至宝,关键的东西都有了,完美!!

TAT 发表于 2022-2-18 20:02

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=251632&ptid=1854]12#[/url] [i]Batcher[/i] [/b]


   
想再追问一个其他的,如果知道的话还望不吝赐教。。
就是用Python写一个小应用,有界面(目前用PyQt5做的),有一些简单功能,但是打包体积会很离谱,
也在网上多方查阅过相关资料,但结果都不太理想。。如果您也恰好有这方面经验的话还望不吝赐教!!

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.