中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 15:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 显示和导出的奇怪问题~~(已结) 查看 1,008 回复 4
楼 主 显示和导出的奇怪问题~~(已结) 发表于 2006-06-03 09:19 ·  中国 江苏 镇江 电信
中级用户
★★
积分 219
发帖 82
注册 2005-10-29 10:56
20年会员
UID 44240
状态 离线
@echo off
echo 你好 (此时能正常显示)
.
.
.
.

echo echo 大家好 >1.txt
echo echo 我们都很好>>1.txt
echo pause >nul >>1.txt (此处一个问题我加了>NUL,但在1.txt里确没有)
echo 文件导出成功! (此时显示的居然是乱码~~)

问题比较奇怪,偶想死了也想不通,省略的过程中主要用到set,if,goto命令其他的都没什么.

自己机使用环境WIN2K3。

另外有什么方法使直接运行的BAT文件,运行于后台?

谢谢各位给予指导!

[ Last edited by jastyg on 2006-6-5 at 08:51 ]
2 发表于 2006-06-03 14:06 ·  中国 广东 广州 电信
中级用户
★★
积分 466
发帖 237
注册 2005-10-12 20:53
20年会员
UID 43413
状态 离线
echo pause >nul >>1.txt 改为
echo pause ^>nul >>1.txt
3 发表于 2006-06-03 15:24 ·  中国 江苏 镇江 电信
中级用户
★★
积分 219
发帖 82
注册 2005-10-29 10:56
20年会员
UID 44240
状态 离线
谢谢
4 发表于 2006-06-03 18:07 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re Scott0902:

这个问题与 jastyg 兄在另一个主题中提到的代码页被切换有关。也就是说,中间省略的语句并非仅仅是et,if,goto等“没有什么”的语句,还包括一些touch/wait等16位DOS程序,而16位DOS程序在CMD中运行会激活NTVDM,而NTVDM会切换代码页为默认的437英文,导致汉字无法正常显示。

解决办法,彼主题也已提到。另外,但凡是乱码问题,通常都与代码页和当前字符集有关。

当然, ^>nul 仍然是必要的。

关于touch的乱码问题
http://www.cn-dos.net/forum/viewthread.php?tid=20994

Win2000/XP中的命令行
http://www.cn-dos.net/forum/viewthread.php?tid=20682

[ Last edited by willsort on 2006-6-3 at 18:10 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
5 发表于 2006-06-05 08:50 ·  中国 江苏 镇江 电信
中级用户
★★
积分 219
发帖 82
注册 2005-10-29 10:56
20年会员
UID 44240
状态 离线
谢谢,热心的斑竹~~
论坛跳转: