中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » Win2000里的choice为什么把我的批处理都变成了英文?
作者:
标题: Win2000里的choice为什么把我的批处理都变成了英文? 上一主题 | 下一主题
osy
初级用户




积分 111
发帖 3
注册 2005-3-10
状态 离线
『楼 主』:  Win2000里的choice为什么把我的批处理都变成了英文?

请问谁知道:Win2000里的choice为什么把我的批处理都变成了英文?
    我的批处理开头都能够显示中文的(如“echo 请输入用户名”),可是一执行到choice的时候就变成了乱码!以后应该显示中文的都成了乱码!谁知道怎样让它一直显示中文?
    更糟糕的是如果先打开CMD,那么所有的中文都是乱码了,怎么解决这个问题呢?
    多谢了!

2005-4-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 2 楼』:  

尽管Win9x的choice.com还可以在CMD下面用,但是Windows系统从Win2000开始就不再鼓励使用choice命令,毕竟它只是16位的DOS应用程序。这就是为什么Win2000、XP都没有choice命令的原因。大部分16位的DOS程序在CMD下运行时,中文界面的、功能强大的CMD就自动“退化”成差劲的Command界面,同时代码页也由原来的中文代码页(936)转为英文代码页(437),所有中文都无法正常显示,因此运行choice时中文都变成乱码。由于Win2000不欢迎choice,让它持续显示中文恐怕办不到,所以用choice时只好将显示的提示信息改为英文。不过用完之后是可以恢复中文显示的,运行chcp 936即可以将英文代码页转为中文。



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2005-4-16 00:00
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
osy
初级用户




积分 111
发帖 3
注册 2005-3-10
状态 离线
『第 3 楼』:  

JonePeng :感谢你的回答,我一直找不到答案,原来是这样!    我的机只有256M内存,用WINXP太慢了,气死人的是连CMD在winxp下也慢,所以我不得不回到WIN2000来使用CMD,WIN98又不安全。我的这个CHICO是下载的,显示不了中文。难道就没有别的命令代替了吗?我的批处理选项有20多个,都是中文的啊!

2005-4-18 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 4 楼』:  

我的电脑也是256M内存啊,感觉上XP的CMD和Win2000的CMD在速度上没什么区别呀。比choice好一些的工具是WBAT,可惜运行起来跟Choice一样不能显示中文,这类16位DOS程序的运行条件最好是纯DOS和Win9x。



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2005-4-18 00:00
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
osy
初级用户




积分 111
发帖 3
注册 2005-3-10
状态 离线
『第 5 楼』:  

看来只好用英文了,谢谢你!

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

“新DOS时代”站长


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

在純DOS下運行也可以呀,加載個DOS漢字系統就可以了,不會存在代碼頁變換的問題。



Wengier - 新DOS时代

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

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

2005-4-21 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『第 7 楼』:  

小姐,请用文明一点,我们说得事CMD里的,不是DOS里的



DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青![upload=bmp]uploadImages/20035317345478982.png[/upload]
2005-4-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re osy:

  Quote:
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;

  另外,在批处理中可以这样使用,使之进入16位DOS子环境之后输出代码页不变::: CP16BCMD.bat - 在16位DOS子模块中使用中文代码页
:: Will Sort - 2005/04/28 - WinXP
@echo off
chcp 437>nul
graftabl 936>nul
choice 中文测试串



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




积分 306
发帖 81
注册 2003-5-10
状态 离线
『第 9 楼』:  

2K/XP的Set命令可以实现和Choice一样的功能。
用set更好,因为是内部命令;而以前choice是外部命令,在特殊环境中会出问题。

例如:
@echo off
:start
echo Please enter your choice[a/b/c]:
set /p UserChoice=
if "%UserChoice%"=="a" goto a
if "%UserChoice%"=="b" goto b
if "%UserChoice%"=="c" goto c
echo Invalid choice!
goto start

:a
echo You chose a!
goto end

:b
echo You chose b!
goto end

:c
echo You chose c!

:end
set UserChoice=
pause

另外你可以在批处理中检测用户当前的操作系统,以此自动调用set还是choice

[ Last edited by 人类 on 2005-12-16 at 03:24 ]



玩DOS,还是我76年出生的人熟...
2005-12-16 03:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
secowu
初级用户





积分 201
发帖 92
注册 2005-12-28
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by 人类 at 2005-12-16 03:20:
2K/XP的Set命令可以实现和Choice一样的功能。
用set更好,因为是内部命令;而以前choice是外部命令,在特殊环境中会出问题。

例如:
@echo off
:start
...

问题是,如果用SET,如何设定在延迟例如10秒后运行默认呢

2006-3-6 17:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: