Board logo

标题: 让非汉字系统显示汉字!VtMagiK.COM 6.30版(支持BCDW) [打印本页]

作者: 本是     时间: 2008-10-20 16:50    标题: 让非汉字系统显示汉字!VtMagiK.COM 6.30版(支持BCDW)

让非汉字系统显示汉字!
最新版本——VtMagiK.COM 6.30版
——增加简写K.COM,支持BCDW中文子菜单,修改帮助信息,增加额外提示

帖子在19楼http://www.cn-dos.net/forum/view ... ghlight=&page=2
下载http://www.cn-dos.net/forum/atta ... cc09&download=1


  Quote:
怎样才能让CONFIG.SYS里的菜单显示中文啊?
http://www.cn-dos.net/forum/viewthread.php?tid=23720&fpage=1

『第 2 楼』:  
如果你使用MSDOS系列的DOS,在CONFIG.SYS中靠MS的[MENU]是不可能显示汉字菜单的!

『第 10 楼』:  
1. 编辑好你的CONFIG.SYS[保证1)使用第三方工具如configP.sys/conmenu.sys; 2)config.sys中有一行DEVICE=config.exe在1)中的工具之前]。
2. vtmagic /t config.sys
3. ren config.sys *.old
ren config.new *.sys
4. 拷贝config.sys、config.exe到你的启动盘根目录。
5. 重启,中文菜单应该成功!

『第 11 楼』:  
谢谢本是的指教,我在纯dos下运行成功了,呵呵!再次表示感谢!

让非汉字系统显示汉字!K.COM 6.30版(恢复原本+支持BCDW)

【新新名词】
模载之母:“模载”生成软件
模载:    VGA字模CG重载
CG:      字符生成器
器:      内存
新内码:  ASCII单字节内码,范围:00~FF共256个ASCII码位,理论上等于128个汉字
          码位,但是为保证正常英文显示,模载限用128个扩展ASCII码80H--0FFH
          (64个汉字)
旧内码:  GBK双字节内码,范围:8140~FEFE(剔除xx7F)共23940个码位


【简要介绍】
    模载之母 K.COM (全名VtMagiK.COM)是一款汉字字模提取和载入程序,以便在VGA
屏幕文本状态下显示可载入替换的字符集,通过载入用户定义的字模实现特定字形(
如汉字)的显示。她是VT家族中最成熟、出错与帮助信息丰富、功能全面的主打成员,
只要有汉字库如GBK16或HZK16,就能脱离汉字系统,实现汉字显示;只要有模载程序,
你甚至可以脱离汉字库——因为库已缩小收在模载中了!

    EGA/VGA 的点阵字符集存放在显示卡的位平面2(即显示RAM)上,用户可以通过EGA/
VGA 提供的接口,修改点阵字符集信息,来装载(不改变当前屏幕上的显示信息)和使用
自己喜欢的字体。然后,在文本视频模式下就可以显示新字形了。这就是“非汉字系统
显示汉字”技术,它速度与英文一样快,而且不消耗内存。可用于 DOS提示符下代替汉
字系统以实现汉字字形显示,甚至用于CONFIG.SYS帮助DOS系统实现启动菜单显示中文。

    这可以说是很高效的技术,但生成“非汉字系统显示汉字的程序”的程序,一般是
靠BT32.EXE,但它体积大,使用麻烦——要自己对照着ASCII码表输入扩展ASCII码字符。
因此本人制作了一个体积小巧(新版约7.5K)的生成器K.COM,能:

    1.自动生成 字模载入程序.EXE(用于命令行/启动配置CONFIG.SYS!)
    2.自动生成 新内码文本.NEW  (不再需要BT32.EXE那样手工输入!)
甚至:
    3.恢复原始文本.OLD         (只是要有.NEW和.EXE文件!)

    目前为保证正常英文显示,K.com限于替换扩展ASCII码字符,最多只能同屏显示64
个不同汉字; 但替换字模的次数是没有限制的, 即要显示不同内容, 只要载入不同的字
模, 同屏限64, 总数却是无限的!

    而且本程序不仅能做到“非汉字系统显示汉字”, 还能让汉字显示得和启动了汉字
系统后显示的汉字一模一样(即无缝——没有中间的断裂)! 新版本还能自动生成对应于
原字符串或文本文件的新内码文件,从此不用再像用BT32.EXE那么麻烦地手工输入!因
为BT32太大、使用太麻烦, 所以我才想到要用汇编重写代码, 从汉字库取字模而不是屏
幕, 以实现脱离汉字系统和使用多种字体的目的,并在willsort版主的建议下实现了自
动替换.)

    更为方便的是好还可以让你不用生成文件再显示,可以通过在 K的命令行上使用汉
字直接显示相关的字形,只要有汉字库,就可以脱离汉字系统显示汉字了。而且,只要
K.COM与字库同在一个目录,就可以在其它目录跨国调用!

    新版本已经支持简体中文GBK码, 方便WINDOWS 中输入和编辑文本——这是旧内码,
但新内码的.NEW文件永远不能在视窗环境中编辑! 因为中文 WINDOWS系统采用双字节编
码,会将单字节的新内码视作乱码而重配,造成系统认为正常而用户无法解读的结果。

    因为模载程序 .EXE文件中已经包含不重复汉字列表, 只要有从同一文件文件生成
的新内码文本.NEW及含旧内码不重复汉字列表的.EXE,就能恢复出旧内码文本(即原始
文本), 这是VT系列软件中最贴心的功能!

    支持对BCDW的ChineseN.INI文件中文子菜单的支持,生成特殊的.FNT及.NEW.每次
最多可替换32个汉字. 通过给出不同的子菜单,可使用许多汉字.


【友情提醒】
    无缝和有缝汉字的设置在某些液晶显示器上会引起“频率宽度不足”或“刷新频
率超界”的错误,形成兼容性问题,所以,不建议在公用启动盘中使用。公用启动盘
请加-M0参数取消缝设置。

    MS-DOS的[MENU]系统菜单无法在选择之前显示汉字菜单项!所以,请借助第三方
工具如ConMenu.SYS或ConfigP.mnu或BOOT.SYS或BOOTCON.SYS等。

    [建议]用VtMagiK或VtMagiC生成的.EXE文件如果已经不再修改,最好用VtSlim压缩执行核心,并用DIET -B xxxx.exe(用于CONFIG.SYS)或UPX -9 xxxx.exe(在DOS命令行或纯DOS下使用)压缩,以进一步缩小体积。



【版本历史】

0.00    05.12.01  VTF软件包(MKHZ/NEWHZ/VTHZMK.COM),生成模载.com
1.00    05.12.07  单文件一体版VTHZMK.COM,生成模载.exe(执行与驱动二用),
                  增加命令9/8/0/3设置有缝汉字,无缝汉字,原视频模式重置,
                  视频模式3重置, 智能识别中英文屏幕模式以显示中文信息
2.0a    05.12.16  VTHZMK.COM,-m/i/s/c/y缝模式/提示语言/起始码/新内码顺序
                  /字库风格; /f/i/s从文件/输入/命令行文本生成模载,
                  /y等待按键,/r恢复字模或视频模式,/h选择语言显示帮助
2.0b-d  05.12.20  检测中文显示环境自动选择中英文提示信息,省略-i和/h,丰富
                  帮助信息,/?写出错及帮助信息入文件,/+合并多个.EXE文件
2.0e-f  06.01.05  VTHZMK.com改名VTmagic.com惟她没治,修正的BUG,除我发现的还有:
                  修正命令行检测.和-的错误(感谢版主willsort测试指出),
                  检测不到81h位的/等字符(感谢fdsiuha网友测试指出),
                  /r8命令带不带0的作用错误(感谢LiveOnLove测试网友指出);
                  /r命令带0则保留屏幕信息、否则清屏(对DOS的CLS命令有持续影响)
3.0a-b  06.01.20  字模逐字扩展命令 /^H横H扩Z纵Z扩K纵K横K扩,显示信息可指定语言:
                  中/英/自动判断语言
5.01    06.01.27  优化载入字模核心
5.10    06.10.20  -M0用于液晶屏LCD上取消8/9点设置(以免引起频率宽度不够的错误)
                  /R0恢复默认的系统字模(不改变屏宽或屏幕内容)
5.20    07.10.20  只要VTmagic.com与hzk16同一目录,任意目录调用,
                  方便无盘启动、工具软/光/U盘,-Y空格恢复默认的HZK16字库
6.00    08.10.20  GBK版,改名VtMagiK.com,支持GBK中文,方便WINDOWS操作系统中编辑
                  原始文本(.NEW不行!);支持GBK16x系列字库名,GBK16x、HZK16x共存
                  时,GBK系列优先;在软件目录中没有GBK16字库的前提下,如果原文本
                  中有GBK扩展汉字,则.NEW正常,.EXE中相关字模清零(显示空白).
                  原来的合并命令改成M或m;原来的扩大命令改成K或k;
                  修正显示新内码扩大字符的显示错误.
6.10    08.10.26  在软件目录中没有GBK16和HZK16时支持汉字DOS屏幕取字模,
                  修改与GBK及象素转字模相关的帮助信息和出错信息,
                  增加提及相关软件及开发者网名:中国DOS联盟论坛的YAYA及
                  CONMENU.SYS/CONFIGP.MNU, 无忧启动论坛的弄潮儿及VTEDIT
6.20    08.11.25  VtMagiK.com中文名改为模载之母——以便名符其实;
                  第一次编写了VtMagiK.com的版本历史;
                  增加/B命令,从.NEW和.EXE文件恢复旧内码文本到文件(出错时到
                  屏幕);修改帮助信息;增加出错信息;取消P/I/T命令大小写区别,
                  改作/P/I/T为显示命令, /PP/II/TT为生成命令, 以减少输入时
                  的大小写切换.
6.30    08.11.27  为VtMagiK.com增加简写K.com,以方便用户在测试和使用中减少
                  打字负担. 增加/W命令, 实现对BCDW的ChineseN.INI文件中文菜
                  单的支持, 生成.NEW特殊的.FNT及.NEW; 纠正针对 -C1的起始替
                  换码设定与检测错误; 增加不重复汉字数量超界时的提示,使它
                  更直观明了; 帮助信息多处修改和增加; 为/?命令增加了额外提
                  示, 方便用户面对特殊情况.

【相关链接】
让非汉字系统显示汉字!模载作坊V.com 2.01版
http://www.cn-dos.net/forum/viewthread.php?tid=44248&fpage=1
让非汉字系统显示汉字!K.COM 6.30版(恢复原本+支持BCDW)
http://www.cn-dos.net/forum/viewthread.php?tid=43866&fpage=1
1.新版 VtMagiK.com V6.00 GBK版 (VtGbk.com也更新到3.00版,改写了命令行参数格式,请查帮助信息),下载http://www.cn-dos.net/forum/atta ... b6b2&download=1
2.新版6.10——支持汉字DOS屏幕取字模,帖子在9楼,下载http://www.cn-dos.net/forum/atta ... d634&download=1
3.新版6.20——贴心支持从.NEW和.EXE文件恢复原始文本,帖子在18楼,下载http://www.cn-dos.net/forum/atta ... 4a29&download=1
4.最新版本6.30——增加简写K.COM,支持BCDW中文子菜单,帖子在19楼,下载http://www.cn-dos.net/forum/atta ... cc09&download=1
让非汉字系统显示汉字!5.20新版
http://www.cn-dos.net/forum/viewthread.php?tid=17591&fpage=2

【相关工具】
ConMenu.sys: http://www.cn-dos.net/forum/atta ... 8584&download=1
ConfigP.mnu: http://www.cn-dos.net/forum/atta ... 35f9&download=1

【相关字库】
WINDOWS下面生成的不同字体风格的HZK16和GBK16:
http://www.cn-dos.net/forum/viewthread.php?tid=18934&fpage=1
宋仿黑楷幼圆: http://www.cn-dos.net/forum/atta ... 2848&download=1
粗细繁隶: http://www.cn-dos.net/forum/atta ... 5b6b&download=1 (X类XZL,L隶书效果较差;CXV是DOS汉字系统原配)
GBK16SFHK.PART01.RAR: http://www.cn-dos.net/forum/atta ... ded7&download=1
GBK16SFHK.PART02.RAR: http://www.cn-dos.net/forum/atta ... ded7&download=1
GBK16SFHK.PART03.RAR: http://www.cn-dos.net/forum/atta ... ded7&download=1
GBK16SFHK.PART04.RAR: http://www.cn-dos.net/forum/atta ... ded7&download=1
GBK16SFHK.PART05.RAR: http://www.cn-dos.net/forum/atta ... ded7&download=1




要兼容请用vtCVT.com(下载http://www.cn-dos.net/forum/atta ... 69e5&download=1),帖子内容在8楼。

问:如果用VtEdit來做中文選單,那還需要用hzk16來掛字型嗎?
  

答:VT新内码编辑器VtEdit.exe for Win98/ME/NT/2000/XP(帖子见http://bbs.wuyou.com/viewthread.php?tid=100870&extra=page%3D1)是无忧启动的弄潮儿写的程序,用于窗口操作系统下编辑新内码文本和生成相关文件的软件,用VB编写。生成的载入程序是VtMagic.com 5.20版的核心,但由于一个多余字节造成字模数据错位,显示字形顶部缺少一条象素线,结果让VtSlim.com不能压缩其载入核心使体积更小。而且VtMagic.com功能多而强大,详情请查帮助信息!!!VtEdit它可以在窗口环境下方便使用,能生成GBK16汉字库(当然其它程序也有此功能),能生成BCDW的字库。替代VtMagic是不可能的,二者各取其长、联合使用吧!
    详细差别请阅http://www.cn-dos.net/forum/view ... page=12&fpage=1(172楼)

[ Last edited by 本是 on 2008-12-5 at 10:23 ]
附件 1: VT系列软件包.rar (2008-10-20 16:50, 19.85 K, 下载附件所需积分 1点 ,下载次数: 295)

作者: xiaoyunwang     时间: 2008-10-20 18:09
辛苦了
作者: info     时间: 2008-10-21 11:49
大师出新版了哈,来试试看,谢谢罗。
作者: wangjf     时间: 2008-10-21 12:24
双手支持
作者: xugaohui     时间: 2008-10-21 14:07
如果楼主能做一个全功能版类似于vtedit就好了.这样使用很方便.
作者: xiaoyunwang     时间: 2008-10-21 14:57
我感到使用 Vtedit 有一种上当的感觉
作者: 本是     时间: 2008-10-21 15:26


  Quote:
Originally posted by xiaoyunwang at 2008-10-21 14:57:
我感到使用 Vtedit 有一种上当的感觉

平心而论,对于一个DOS环境及命令行操作几乎不懂的新手,XP新内码编辑器vtEdit比vtMagi?更加方便,且不用考虑GBK16和HZK16汉字库,相关文件名的变换等细节,甚至不用进DOS环境。
而对于熟悉DOS命令行操作的用户,绝对不会喜欢用窗口下的软件版本,首先它们体积庞大,不便携带,对操作系统环境有多种限制。我即使用XP也经常在COMMAND.COM的DOS方式下甚至VPC的纯DOS下工作和解决问题。
作者: 本是     时间: 2008-10-21 22:08
 VtEdit生成的test.exe字模载入核心都有如下问题:
文件在绝对地址1D0h处多了一个00值的字节,而其载入程序行中的字模数据起始地址竟然与VtMagi?系列的一样!所以显示字形有第一象素行空白的缺陷。

由此还造成此类test.exe与vtMagi?和vtSlim的不兼容,即不能用vtMagi?来合并文件、不能用vtSlim压缩.EXE字模载入核心。为了解决此问题,我开发一小程序清除多余字节。

  vtCvt.com v1.00 字模载入核心.EXE转换器
以方便vtMagi?/vtSlim与vtEdit之间的环境切换
(C) 2008.10  设计: Born2be/Luo MingAn(本是/罗明安)

用法:

vtCvt test.exe
   根据.EXE文件是否来自VtEdit作相应整理并重新生成

(说明:附件中有vtEdit生成的TEST.EXE文件,特征是文件大小为单数值!
TEST.SYS为.NEW型新内码文本)

[ Last edited by 本是 on 2008-10-22 at 01:16 ]
附件 1: VTCVT.RAR (2008-10-22 01:16, 1.41 K, 下载附件所需积分 1点 ,下载次数: 145)

作者: 本是     时间: 2008-10-26 20:04    标题: VtMagiK.com v6.10 无汉字库时从汉字DOS屏幕获取字模

VtMagiK.com v6.10 支持在没有汉字库时直接从汉字DOS屏幕获取字模

1.VtMagiK.com能够在没有GBK16/HZK16时, 从直接写屏汉字系统的屏幕上
读汉字字形的象素点并转换成字模数据(但在中文DOS屏幕下执行载入汉字
字模的.EXE没有作用; 必须按Ctrl+F7等组合键切换到英文DOS屏幕后执行)
>>即: 中文DOS屏幕下读点生成.EXE, 英文DOS屏幕下执行.EXE, 反之不行!
2.修改与GBK及象素转字模相关的帮助信息和出错信息
3.增加提及相关软件及开发者网名:中国DOS联盟的YAYA,无忧启动的弄潮儿,VTEDIT
附件 1: VTMAGIK.RAR (2008-10-26 20:04, 6.31 K, 下载附件所需积分 1点 ,下载次数: 85)

作者: lzlyh     时间: 2008-10-26 20:21    标题: 谢谢楼主

一直为此而烦,今天终于找到组织了,谢谢了
作者: 本是     时间: 2008-10-26 23:13    标题: 请帮忙测试!!!

在XP的DOS全屏窗口下,
    试验成功的汉字系统:CCDOS97、YAYA精简的ACIOS5.02版、UCDOS98/7.0、天汇袖珍3.2版(234404字节)、UCTG四合一之UCDOS6.0/ACIOS4.0
    试验失败的汉字系统:袖珍龙、UCTG四合一之TWay3.0/GHos1.0

其它汉字系统、其它Windows版本、纯DOS(VPC、VFLOPPY、硬盘)环境等之中的情况,请大家帮忙测试!
作者: fatality     时间: 2008-10-26 23:39
时至今日才知道DOS已经有这么彻底的汉字显示解决方案, 实在是非常的仰慕楼主啊!
准备花几天时间好好学习一下了.

另还想了解一下, 这个工具可以用在syslinux/pxelinux下吗?
作者: zhenxin     时间: 2008-11-1 15:27
THANKS FOR YOUR SHARING
作者: flyhacker     时间: 2008-11-2 00:02
ding !!!
作者: hyt3d     时间: 2008-11-6 00:01
怎么用啊,给个教程啊,弄潮儿的就是简单.你这个老是不完整,给个步骤啊!!
作者: hyt3d     时间: 2008-11-6 14:24
新版的英文字母M和其它字母太近了.
作者: bluster     时间: 2008-11-8 12:06
多谢了,琢磨琢磨这个。
作者: 本是     时间: 2008-11-25 10:54    标题: 让非汉字系统显示汉字!模载之母VtMagiK.com 6.20版

让非汉字系统显示汉字!模载之母VtMagiK.com 6.20版

VtMagiK.com中文名改为模载之母——
以便名符其实

第一次编写了VtMagiK.com的版本历史——
以便名正言顺

增加/B命令,从.NEW和.EXE文件恢复旧内码文本到文件(出错时到屏幕)——
这是VT系列软件中最贴心的功能!

修改帮助信息;
增加出错信息;

取消P/I/T命令大小写区别,改作/P/I/T为显示命令,/PP/II/TT为生成命令——
方便命令行输入和批处理调用.

内容丰富的说明见附件!或本贴1楼。
附件 1: VtMagiK6.20.zip (2008-11-25 10:54, 10.28 K, 下载附件所需积分 1点 ,下载次数: 66)

作者: 本是     时间: 2008-11-27 13:13    标题: 让非汉字系统显示汉字!K.COM 6.30版(恢复原本+支持BCDW)

让非汉字系统显示汉字!K.COM 6.30版(恢复原本+支持BCDW)

    1.为VtMagiK.com增加简写K.com,以方便用户在测试和使用中减少打字负担;
    2.增加/W命令, 实现对BCDW的 ChineseN.INI文件中文菜单的支持,
      生成.NEW及特殊的.FNT;
    3.纠正针对 -C1的起始替换码设定与检测BUG;
    4.增加不重复汉字数量超界时的提示,使它更直观明了;
    5.帮助信息多处修改和增加;
    6.为/?命令增加了额外提示, 方便用户面对特殊情况;

[ Last edited by 本是 on 2008-11-27 at 17:28 ]
附件 1: VtMagiK6.30.zip (2008-11-27 13:19, 11.47 K, 下载附件所需积分 1点 ,下载次数: 419)

作者: xiaoyunwang     时间: 2008-11-28 22:28
非常感谢,Vtmagik 增加了生成 bcdw 字体的功能,可惜我这次准备制作启动光盘的菜单项太多,仅分类的类别名称都超过了 64 个字符,还有很多的子菜单更不用说了,暂且不能使用 bcdw 中文功能了。非常感谢本是大师一如既往的努力和奉献精神!!!...
作者: cfgs     时间: 2008-12-9 23:05
谢谢,下载试试。
作者: wuchan     时间: 2008-12-22 14:18
这个感觉复杂了点.,要先编再生成....
作者: tapwater     时间: 2008-12-23 11:07
谢谢,其实还是不知道怎么用,呵呵
作者: tcl123     时间: 2008-12-26 23:39
这个不错,学习了!
作者: joinnow2008     时间: 2008-12-27 16:29
最强之dos命令 – for (是新手学习FOR语句的好资料)

  这篇文章是网上找的,很多初学DOS的朋友对FOR语句掌握的好不是太过熟悉,希望这边文章能够给你开阔思路帮助你把FOR语句学好,主要的参数介绍和实例讲的都很清楚,也希望对DOS越来越感兴趣--->发挥你的想像力吧

               正文开始

以前常觉得DOS的命令行功能太弱,无法象UNIX一样可以用命令行完成非常复杂的操作。实际上,当MS从WIN2K开始将命令行增强后,已经借鉴了相当多UNIX的优点,虽然还无法做到象UNIX那么灵活,但已可完成绝大多数的任务,比如用&&和  连接两个(或更多)命令,由前一个的返回值来决定下一个是否执行,等等。而在这些增强中,最明显的,就是FOR命令。
举个例子,用适当的参数,可用FOR命令将 date /t 的输出 从 "Sat 07/13/2002" 变成你想要的格式,比如, "2002-07-13":

c:\>for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b
2002-07-13

该例将在(3)中详细说明。
0. 基本应用
简单说,FOR是个循环,可以用你指定的循环范围生成一系列命令。最简单的例子,就是人工指定循环范围,然后对每个值执行指定的命令。例如,想快速报告每个硬盘分区的剩余空间:

for %a in (c: d: e: f do @dir %a\   find "bytes free"

将输出:

8 Dir(s) 1,361,334,272 bytes free
15 Dir(s) 8,505,581,568 bytes free
12 Dir(s) 12,975,149,056 bytes free
7 Dir(s) 11,658,854,400 bytes free

用它可以使一些不支持通配符的命令对一系列文件进行操作。在WIN9X中,TYPE命令(显示文件内容)是不支持*.txt这种格式的(WIN2K开始TYPE已支持通配)。遇到类似情况就可以用FOR:

for %a in (*.txt) do type %a

这些还不是FOR最强大的功能。我认为它最强大的功能,表现在以下这些高级应用:

1. 可以用 /r 参数遍历整个目录树
2. 可以用 /f 参数将文本文件内容作为循环范围
3. 可以用 /f 参数将某一命令执行结果作为循环范围
4. 可以用 %~ 操作符将文件名分离成文件名、扩展名、盘符等独立部分

现分别举例说明如下:
1. 用 /r 遍历目录树
当用 *.* 或 *.txt 等文件名通配符作为 for /r 的循环范围时,可以对当前目录下所有文件(包括子目录里面的文件)进行操作。举个例子,你想在当前目录的所有txt文件(包括子目录)内容中查找"bluebear"字样,但由于find本身不能遍历子目录,所以我们用for:

for /r . %a in (*.txt) do @find "bluebear" %a

find 前面的 @ 只是让输出结果不包括 find 命令本身。这是DOS很早就有的功能。和FOR无关。
当用 . 作为循环范围时,for 只将子目录的结构(目录名)作为循环范围,而不包括里面的文件。有点象 TREE 命令,不过侧重点不同。TREE 的重点是用很漂亮易读的格式输出,而FOR的输出适合一些自动任务,例如,我们都知道用CVS管理的项目中,每个子目录下都会有一个CVS目录,有时在软件发行时我们想把这些CVS目录全部去掉:

for /r . %a in (.) do @if exist %a\CVS rd /s /q %a\CVS

先用 if exist 判断一下,是因为 for 只是机械的对每个目录进行列举,如果有些目录下面没有CVS也会被执行到。用 if exist 判断一下比较安全。
这种删除命令威力太大,请小心使用。最好是在真正执行以上的删除命令前,将 rd /s /q 换成 @echo 先列出要删出的目录,确认无误后再换回rd /s /q:

for /r . %a in (.) do @if exist %a\CVS @echo %a\CVS

可能目录中会多出一层 ".",比如 c:\proj\release\.\CVS ,但不会影响命令的执行效果。
2. 将某一文件内容或命令执行结果作为循环范围:
假如你有一个文件 todel.txt,里面是所有要删除的文件列表,现在你想将里面列出的每个文件都删掉。假设这个文件是每个文件名占一行,象这样:

c:\temp\a1.txt
c:\temp\a2.txt
c:\temp\subdir\b3.txt
c:\temp\subdir\b4.txt

那么可以用FOR来完成:

for /f %a in (todel.txt) do del %a

这个命令还可以更强大。比如你的 todel.txt 并不是象上面例子那么干净,而是由DIR直接生成,有一些没用的信息,比如这样:

Volume in drive D is DATA
Volume Serial Number is C47C-9908
Directory of D:\tmp
09/26/2001 12:50 PM 18,426 alg0925.txt
12/02/2001 04:29 AM 795 bsample.txt
04/11/2002 04:18 AM 2,043 invitation.txt
4 File(s) 25,651 bytes
0 Dir(s) 4,060,700,672 bytes free

for 仍然可以解出其中的文件名并进行操作:

for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a DEL %a

当然,上面这个命令是在进行删除,如果你只是想看看哪些文件将被操作,把DEL换成echo:

for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a echo %a

你将看到:

alg0925.txt
bsample.txt
invitation.txt

skip=5表示跳过前5行(就是DIR输出的头部信息),tokens=5表示将每行的第5列作为循环值放入%a,正好是文件名。在这里我加了一个文件存在判断,是因为最后一行的"free"刚好也是第5列,目前还想不出好的办法来滤掉最后两行,所以检查一下可保万无一失。
3. 可以用 /f 参数将某一命令执行结果作为循环范围
非常有用的功能。比如,我们想知道目前的环境变量有哪些名字(我们只要名字,不要值)。可是SET命令的输出是“名字=值”的格式,现在可以用FOR来只取得名字部分:

FOR /F "delims==" %i IN ('set') DO @echo %i

将看到:

ALLUSERSPROFILE
APPDATA
CLASSPATH
CommonProgramFiles
COMPUTERNAME
ComSpec
dircmd
HOMEDRIVE
......

这里是将set命令执行的结果拿来作为循环范围。delims==表示用=作为分隔符,由于FOR /F默认是用每行第一个TOKEN,所以可以分离出变量名。如果是想仅列出值:

FOR /F "delims== tokens=2" %i IN ('set') DO @echo %i

tokens=2和前例相同,表示将第二列(由=作为分隔符)作为循环值。
再来个更有用的例子:
我们知道 date /t (/t表示不要询问用户输入)的输出是象这样的:

Sat 07/13/2002

现在我想分离出日期部分,也就是13:

for /f "tokens=3 delims=/ " %a in ('date /t') do @echo %a

实际上把 tokens后面换成1,2,3或4,你将分别得到Sat, 07, 13和2002。注意delims=/后面还有个空格,表示/和空格都是分隔符。由于这个空格delims必须是/f选项的最后一项。
再灵活一点,象本文开头提到的,将日期用2002-07-13的格式输出:

for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b

当tokens后跟多个值时,将分别映射到%a, %b, %c等。实际上跟你指定的变量有关,如果你指定的是 %i, 它们就会用%i, %j, %k等。
灵活应用这一点,几乎没有做不了的事。
4. 可以用 %~ 操作符将文件名分离成文件名、扩展名、盘符等独立部分
这个比较简单,就是说将循环变量的值自动分离成只要文件名,只要扩展名,或只要盘符等等。
例:要将 c:\mp3下所有mp3的歌名列出,如果用一般的 dir /b/s 或 for /r ,将会是这样:

g:\mp3\Archived\05-18-01-A\游鸿明-下沙\游鸿明-01 下沙.mp3
g:\mp3\Archived\05-18-01-A\游鸿明-下沙\游鸿明-02 21个人.mp3
......
g:\mp3\Archived\05-18-01-A\王菲-寓言\王菲-阿修罗.mp3
g:\mp3\Archived\05-18-01-A\王菲-寓言\王菲-彼岸花.mp3
g:\mp3\Archived\05-18-01-A\王菲-寓言\王菲-不爱我的我不爱.mp3
......

如果我只要歌名(不要路径和".mp3"):

游鸿明-01 下沙
游鸿明-02 21个人
......
王菲-阿修罗
王菲-彼岸花
王菲-不爱我的我不爱
......

那么可以用FOR命令:

for /r g:\mp3 %a in (*.mp3) do @echo %~na

凡是 %~ 开头的操作符,都是文件名的分离操作。具体请看 for /? 帮助。
本文举的例子有些可能没有实际用处,或可用其它办法完成。仅用于体现FOR可以不借助其它工具,仅用DOS命令组合,就可完成相当灵活的任务
作者: banelzhao     时间: 2009-2-12 13:33
谢谢,学习了。
作者: cfgs     时间: 2009-2-15 15:07
本是dx能不能汉化一个屏保:梦幻水族馆(Dream Aquarium) v1.1770,能不能汉化屏保运行后的设置(因屏保需要特殊字体)?

这里有下载:http://soft6.greendown.cn//200811/DreamAquarium.rar
作者: 276545855     时间: 2009-2-17 17:41
ddddddddddddddddddddddddddddddddddddddddd
作者: upwardss     时间: 2009-2-22 01:07
好网站
作者: liuxy321     时间: 2009-2-25 22:55
非常不错的东东,下载学习。
作者: gimmick     时间: 2009-3-1 01:07
下来学习,谢谢
作者: shenyangmusic     时间: 2009-3-3 10:10
我现在研究DOS是不是晚了点啊。十年前学过,哈哈,应该还能对付。
作者: shenyangmusic     时间: 2009-3-3 10:18
讲究,支持一下是必须地。
作者: newweiwei     时间: 2009-3-4 20:49
谢谢了!!!!
作者: nivigo     时间: 2009-3-13 01:24    标题: 学习中

学习中
作者: q8q8feng     时间: 2009-3-18 07:12
认真学习了,谢谢本是
作者: 淡淡一笑     时间: 2009-4-18 14:06
一直在用以前的版本生成BCDW的菜单。。。试用一下这个
作者: winndy     时间: 2009-4-26 21:09
谢谢分享!!!!!!!!
作者: rkzu     时间: 2009-5-1 21:16
现在不懂,正在了解过程中,希望进一步学习。
作者: dragon888     时间: 2009-5-11 22:48
THANKS FOR YOUR SHARING
Good program
作者: oneuu     时间: 2009-5-16 23:50
只有简介及版本的变化,没有使用说明书...弄得一头雾水.
做出软件是辛苦,但也要写份教程告诉应用时,应具备什么条件,才能达到你所讲的效果.
要不就白白的乱忙一阵.
作者: geranran     时间: 2009-5-26 00:26
我自己的DOS工具盘就差个中文显示功能,这下好了。
作者: xiaohhl     时间: 2009-7-30 16:13
wo yao xia zai a
作者: tingu     时间: 2009-9-2 21:59
下来学了~~~~~~
作者: l1t     时间: 2009-9-18 18:53
记录 学习
作者: Sleepy2000     时间: 2009-11-6 23:11
谢谢老大,不用额外文件,体积小,还是很有优势的。
作者: gzwilson     时间: 2009-11-12 04:23    标题: 大力支持

大力支持
作者: xpcu     时间: 2009-12-4 13:21    标题: 测试看看

测试看看
作者: chishingchan     时间: 2009-12-11 10:35    标题: 提点意见:

在wbat对话框的阴影及DOS启动菜单的标题双横线的字符被字模占用,使得不美观。
建议添加排除字符功能,例如在命令行中排除阴影的字符及菜单标题双横线的字符:
k.com /e111,222
注 111 及 222 代表某字符的ASCII码
作者: 本是     时间: 2009-12-12 14:37


  Quote:
Originally posted by chishingchan at 2009-12-11 10:35:
在wbat对话框的阴影及DOS启动菜单的标题双横线的字符被字模占用,使得不美观。
建议添加排除字符功能,例如在命令行中排除阴影的字符及菜单标题 ...

这个建议不错,有创意,我会考虑加入的。但目前没有时间,要年后才可能,而且还要看手头项目完成的情况再定。谢谢!
作者: 本是     时间: 2009-12-12 14:44
另外,目前也可以考虑用分段生成,再拼接的方法,麻烦一些,但暂时不改写程序就能实现这一功能。
作者: cairi     时间: 2009-12-21 12:10    标题: 哎呀,做了很久了都没成啊

哎呀,做了很久了都没成啊  !郁闷死了,水平问题么 ?
作者: lbdl     时间: 2010-1-1 13:06
正在学习中,下来实践一下。感谢本是的辛勤劳动。
作者: huang029     时间: 2010-1-2 16:32
学习下哦哦
作者: pencilpen     时间: 2010-2-1 14:53
顶,已经找了好久了,眼泪哗哗的
作者: chenall     时间: 2010-3-1 17:46
能不能EXE格式弄成GRUB4DOS的外置程序格式.

这样应该可以用于GRUB4DOS的菜单中吧.嘿嘿.

或者有没有源码.
作者: 本是     时间: 2010-3-1 21:40
请看罗云彬的源码例:
.286
CODE                SEGMENT
                ASSUME CS:CODE,DS:CODE
                ORG 100H
START:
                jmp        install
;   ........       0000 0000      00h
;   ..xxxxxx      0011 1111      3fh
;   .x......       0100 0000      40h
;   .x.xxxxx      0101 1111       5fh
;   .x.x..x.      0101 0010       52h
;   .xxx.x..      0111 0100       74h
;   ....x.xx      0000 1011       0bh
;   ...x.x..      0001 0100       14h
;   ..x.x..x      0010 1001      29h
;   .x..x.x.      0100 1010       4ah
;   .x..x..x      0100 1001      49h
;   .x...x..      0100 0100       44h
;   .x....xx      0100 0011       43h
;   ..xxxxxx       0011 1111      3fh
;   ........      0000 0000       00h
;   ........      0000 0000       00h

CHAR    db     00h,3fh,40h,5fh,52h,74h,0bh,14h         ;left part of phone
        db     29h,4ah,49h,44h,43h,3fh,00h,00h

        db     00h,0f8h,04h,0f4h,094h,5ch,0a0h,50h    ;right part of phone
        db     28h,0a4h,24h,44h,84h,0f8h,00h,00h

STRn    db    'This is a phone:',0ceh,0cfh,'$'

install:
        mov    ax,1100h             ;功能号
        mov    bx,1000h             ;BH=10H,每字符点阵为16字节
        mov    cx,2                 ;共要装入2字节
        mov    dx,00ceh             ;从00CEH开始(00CEH,00CFH)
        push ds
        pop es
        mov    bp,offset char       ;ES:BP为字符点阵数据地址
        int    10h

        mov    ah,9                 ;把字符 ce,cf显示出来看看,是什么!
        mov    dx,offset strn
        int    21h
        ret
CODE                ENDS
                END START
作者: chenall     时间: 2010-3-2 14:04
原来如此,明白了,谢谢。
自己小测了一下。

可以在GRUB4DOS环境下显示中文而不需要加载字体了。嘿嘿。我再整理一下。目前只是手工修改内存测试。
作者: QIUTIAN     时间: 2010-3-6 16:23
这个下来试试看看!有了这个在DOS下就就更好了!
作者: 54987     时间: 2010-4-29 00:45
还不是很懂怎么使用 学习了