中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » XP的命令行下不支持16位程序的中文显示?
« [1] [2] »
作者:
标题: XP的命令行下不支持16位程序的中文显示? 上一主题 | 下一主题
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『楼 主』:  XP的命令行下不支持16位程序的中文显示?

To All:

    我的XP是2002 SP1版。但是无论进入COMMAND还是CMD,在运行16位老程序之后,都无法显示中文。比如DEBUG之类。

    不知各位有何解决之道啊?

[ Last edited by willsort on 2005-9-27 at 19:12 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ssclose
初级用户




积分 133
发帖 7
注册 2004-2-2
状态 离线
『第 2 楼』:  

从报纸上看到的方法,xp下用turbo c通过
在cmd中输入 start/separate 路径\程序名
separate的意思是在内存中开辟一个单独的空间运行16位程序
还有个参数shared,是在共享的内存空间启动16位程序,这个没试过
你试试看

2004-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 3 楼』:  

Try load some Chinese system, such as CCDOS97.



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-2-8 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 4 楼』:  

Re ssclose:

    敬谢回复!

    此方法我以试过,总体来说,不能尽如人意。

    编了一个简单的测试批处理:

    @echo off
    echo 中文显示
    pause
    debug
    echo 显示中文

    其中DEBUG一句做过若干修改。
    ECHO Q>QUIT.ASD
    DEBUG 〈 QUIT.ASD
   不用START使用中文有问题,使用START问题更多,似乎管道符号对START很有影响,或者说START对管道符号很有影响。另外,新窗口的打开,程序的等待执行,一番参数的使用,曾使我的XP重启三次。

    看来,还是老老实实守着自己的98和DOS6吧。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-8 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:  

Re Wengier:

    十分遗憾。你的方法我无法考虑,为了执行一个简单的批处理,而需要运行中文系统,即使不考虑兼容性问题,代价也是太高了。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-8 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 6 楼』:  

那还是老老实实地守着纯DOS系统吧。但98和DOS6都不怎么实用。MS-DOS 7.10还是兼容性最好也是最新的,毕竟现在都已经2004年了,而不是DOS6推出的1993-1994年!



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-2-8 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 7 楼』:  

太遗憾了!



2004-2-9 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
骨灰龙
中级用户




积分 206
发帖 22
注册 2004-2-5
状态 离线
『第 8 楼』:  

只能表示遗憾。希望将来可以做了个补丁之类的。
不过,可以通过虚拟机试试。

2004-2-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 9 楼』:  

To All:

  前不久的测试中发现了一个临时解决的办法:

  1、通过command进入xp的dos控制台,然后使用graftabl 936,此时可以在16位程序中使用中文;
  2、通过cmd进入,然后分别使用chcp 437和graftabl 936,此时也可以在16位程序中使用中文;

  另外,在cmd中测试mem会只显示空行,但是一旦在其中使用debug退出后,mem就会恢复正常,其他类似的16位老dos程序也有同样的问题;也就是说,mem需要某种环境,但是只有调用类似Debug的16位程序,才能激活这种环境。它很有可能就是ntvdm的16位子环境,也就是command所激活的环境。但是为什么mem自身不会激活,还有一些程序也不会激活。

  另外,16位环境与32位环境究竟有哪些区别和联系,通过测试,已知有以下区别,大家可以再找找看:

  1、代码页:cmd是936,command是437;
  2、环境变量:cmd多于command,但command多了声卡的blaster;
  3、启动配置:command启用了config.nt和autoexec.nt;
  4、外壳层数:关闭command会提示无法结束,只有使用exit退出一层壳后,才能正常关闭;而cmd无此问题;
  5、窗口标题:cmd是命令提示符,而command是Command Prompt;

[ Last edited by willsort on 2005-9-27 at 19:13 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-4-8 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 10 楼』:  

To All:

  有意思的是,近来不知出于什么原因,当我在“运行”中输入cmd启动命令行后,代码页变成了英文的437,而且运行mem也没有了空行闪屏问题,但是其启动后的版本LOGO却仍然显示的是XP,只不过变成了英文显示,而不是command的DOS版本显示。而即使输入cmd.exe或者c:\windows\system32\cmd.exe,也是一样的结果。

  而我在开始的附件菜单中点击“命令提示符”的快捷方式,或者找到system32下的cmd.exe直接点击,代码页都正常的显示中文。

标题:C:\windows\system32\cmd.exe
=====================
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
=====================
在“运行”中输入cmd所得到的命令行窗口

标题:命令提示符
=====================
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
=====================
直接点击快捷方式所得到的命令行窗口

标题:Command Prompt
=====================
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
=====================
在“运行”中输入command所得到的命令行窗口

请注意它们的版权限制时间也不同。

[ Last edited by willsort on 2005-9-27 at 19:15 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-27 19:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:  

Re All:

      10楼的代码页问题,经验证,是注册表中的某个项被修改,如下:

  Quote:
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:000001b5

其中的1b5便是437(OEM 美国)的十六进制写法。

      而9楼提到的cmd中执行mem显示空行的问题,具体描述如下:
      
      通过运行CMD或者点击菜单中命令行提示符进入命令行窗口,直接执行mem或者其它一些较老的16位DOS程序,会立即将chcp代码页切换为437,这个切换动作会进行清屏,然后显示11行空行。而如果直接执行mem>mem.txt,则切换动作仍然发生,只是显示的空行数变为1,而mem.txt中显示出11行文字。

  Quote:
Invalid keyboard code specified


    655360 bytes total conventional memory
    655360 bytes available to MS-DOS
    633664 largest executable program size

   1048576 bytes total contiguous extended memory
         0 bytes available contiguous extended memory
    941056 bytes available XMS memory
           MS-DOS resident in High Memory Area

因此有以下推测:

      1、前者的11行空行显示的正是mem.txt中的内容。
      2、mem.txt首行中Invalid一句说明程序使用了不兼容于现有Windows的Keyboard Code,而据测试还没有发现有某个16位DOS程序可以解决这种兼容问题。
      3、Code Page的强制切换可能源于这种无效的Keyboard Code。
      4、而代码页切换后程序输出尚不能正常显示,则意味着程序的输出尚不兼容于这种代码页,而DEBUG却可以进行调整。
      5、根据 Wengier 在 http://www.cn-dos.net/forum/viewthread.php?tid=1019 中的提示,在将命令行窗口全屏后,再执行 mem 等程序将不会出现猜测4所指出的问题,因此此种切换应该进行了同debug那段代码一样执行了相应的调整动作。

[ Last edited by willsort on 2005-10-15 at 12:32 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-10-15 11:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by willsort at 2005-9-27 19:03:
To All:

  有意思的是,近来不知出于什么原因,当我在“运行”中输入cmd启动命令行后,代码页变成了英文的437,而且运行m..

是你改变了cmd的属性引起的!如果能将属性改正常的话就没有问题了!



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2005-10-15 12:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 13 楼』:  

Re qwe1234567:

      那么,你尝试不通过注册表,而手动修改cmd的代码页属性,而且使这种修该对以后打开的所有命令行窗口有效。我始终找不到这个手动修改的选项入口。而删除掉这个注册表键支之后,命令行窗口就已经恢复正常了。

----------------------------------------------------------------------------------------------------
      抱歉!在我发完本帖之后,再去寻找,却意外找到了这个选项entry。

      打开命令行窗口后,先后按Alt+Space,D, 进入“控制台窗口 属性”对话框,在“选项”标签页中对“默认代码页”进行调整即可。我以前总是按Alt+Space,D,结果总是进入“C:\windows\system32\cmd.exe”属性 对话框,其中的代码页是不可调整的。

      但是,这个选项修改的是所有控制台的代码页,对应的注册表键支是:

  Quote:
[HKEY_CURRENT_USER\Console]
"CodePage"=dword:000003a8

而原来的[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]不知是如何被创建的。


[ Last edited by willsort on 2005-10-15 at 12:50 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-10-15 12:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 14 楼』:  

还有一个办法就是写一个REG文件,在CMD有问题时导入即可!



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2005-11-3 21:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 15 楼』:  


chcp 437>nul&graftabl 936>nul
http://www.cn-dos.net/forum/viewthread.php?tid=26795

WillSort 兄的确厉害!!!怀念ing...




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-2-11 14:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: