中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 12:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]能否擦除显示过的内容? 查看 2,168 回复 10
楼 主 [求助]能否擦除显示过的内容? 发表于 2005-08-31 12:24 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200
发帖 466
注册 2005-02-01 00:00
21年会员
UID 35867
性别 男
来自 上海
状态 离线
比如我在批处理中使用了一个pause命令,屏幕上显示“按任意键继续”,那能否在执行完pause之后将“按任意键继续”的字样擦除?
32位才是DOS未来的希望
个人网志:http://sololand.moe
2 发表于 2005-08-31 14:34 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
cls
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2005-08-31 14:58 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200
发帖 466
注册 2005-02-01 00:00
21年会员
UID 35867
性别 男
来自 上海
状态 离线
我不想清屏……
其实我只是想显示一段文字,在显示过程中每到满屏就提示按任意键继续,按后不留下提示信息,除了把文字内容写入一个文件再用more以外,不知还有没有别的方法可以不写入文件?
32位才是DOS未来的希望
个人网志:http://sololand.moe
4 发表于 2005-08-31 15:15 ·  中国 重庆 沙坪坝区 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
使用pause>nul
http://www.msfans.net/bbs/
5 发表于 2005-08-31 15:39 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
关键他还说要按任意键继续这个提示。比较难,除非自己写程序。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
6 发表于 2005-08-31 16:20 ·  中国 广东 广州 白云区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
22年会员
UID 15812
性别 男
来自 广东广州
状态 离线
用MSDOS 7.1启动盘里面的Writext程序就可以把那个提示“擦掉”。Writext 可以向屏幕任意位置输出字符串,经过测试,Writext好像不能输出空格字符,但可以用黑色字符来遮盖那个提示:

...
pause
writext -r 2- 1 -f0 "Press any key to continue..."
...
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
7 发表于 2005-08-31 17:44 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
是的,直接编程写显示的缓冲区应该是可以的。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
8 发表于 2005-09-02 16:36 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200
发帖 466
注册 2005-02-01 00:00
21年会员
UID 35867
性别 男
来自 上海
状态 离线
如果在2K/XP下有什么办法吗?
32位才是DOS未来的希望
个人网志:http://sololand.moe
9 发表于 2005-09-02 17:06 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re brglng:

仍然不太明白你想擦除显示的目的何在。根据你在3楼的需求,是否可以按以下方案进行。

首先用cls清屏,然后用多个Echo显示一屏文字,然后用pause暂停;之后的第二屏内容,仍然可以用cls+echo+pause的组合,此时它不会显示上一屏的pause信息。

除非你的想法是保留上一屏的全部或部分内容,而仅删除pause信息,那么,可以在 2000/XP 下用 ANSI.SYS 提供的光标置位功能(ESC[行号;列号H),定位到pause信息行;然后与JonePeng兄的方案一样,写上一行空格或黑色字符(应该是指ASCII码值为256(0xFF)的字符);或者,也可以定位后直接输出新文本的内容,将自动覆盖pause信息。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
10 发表于 2005-09-02 17:10 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200
发帖 466
注册 2005-02-01 00:00
21年会员
UID 35867
性别 男
来自 上海
状态 离线
那还要用ANSI.SYS。纯粹在批处理中有什么办法吗?
32位才是DOS未来的希望
个人网志:http://sololand.moe
11 发表于 2005-09-02 17:22 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re brglng:

你的要求未免太苛刻了些!这样的话,可以参照以下的示意代码:


:: Display.bat - Display text with pause
:: Will Sort - 17:08 2005-9-2 - CMD@WinXP
@echo off & setlocal
:display
cls
echo messages of screen 1 ...
if "%scr1%"=="" pause & set scr1=pass & goto display
echo messages of screen 2 ...
if "%scr2%"=="" pause & set scr2=pass & goto display
echo messages of screen 3 ...
if "%scr3%"=="" pause & set scr3=pass & goto display
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
论坛跳转: