Board logo

标题: [求助]能否擦除显示过的内容? [打印本页]

作者: brglng     时间: 2005-8-31 12:24    标题: [求助]能否擦除显示过的内容?

比如我在批处理中使用了一个pause命令,屏幕上显示“按任意键继续”,那能否在执行完pause之后将“按任意键继续”的字样擦除?
作者: Climbing     时间: 2005-8-31 14:34
cls
作者: brglng     时间: 2005-8-31 14:58
我不想清屏……
其实我只是想显示一段文字,在显示过程中每到满屏就提示按任意键继续,按后不留下提示信息,除了把文字内容写入一个文件再用more以外,不知还有没有别的方法可以不写入文件?
作者: chenhui530     时间: 2005-8-31 15:15
使用pause>nul
作者: Climbing     时间: 2005-8-31 15:39
关键他还说要按任意键继续这个提示。比较难,除非自己写程序。
作者: JonePeng     时间: 2005-8-31 16:20
用MSDOS 7.1启动盘里面的Writext程序就可以把那个提示“擦掉”。Writext 可以向屏幕任意位置输出字符串,经过测试,Writext好像不能输出空格字符,但可以用黑色字符来遮盖那个提示:

...
pause
writext -r 2- 1 -f0 "Press any key to continue..."
...
作者: Climbing     时间: 2005-8-31 17:44
是的,直接编程写显示的缓冲区应该是可以的。
作者: brglng     时间: 2005-9-2 16:36
如果在2K/XP下有什么办法吗?
作者: willsort     时间: 2005-9-2 17:06
Re brglng:

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

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

      除非你的想法是保留上一屏的全部或部分内容,而仅删除pause信息,那么,可以在 2000/XP 下用 ANSI.SYS 提供的光标置位功能(ESC[行号;列号H),定位到pause信息行;然后与JonePeng兄的方案一样,写上一行空格或黑色字符(应该是指ASCII码值为256(0xFF)的字符);或者,也可以定位后直接输出新文本的内容,将自动覆盖pause信息。
作者: brglng     时间: 2005-9-2 17:10
那还要用ANSI.SYS。纯粹在批处理中有什么办法吗?
作者: willsort     时间: 2005-9-2 17:22
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