[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样实现菜单的局部刷新?

我有一个菜单,内容:
  1. ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
  2. ┋SorXXX的打开工具,主要用于游戏模式的选取以及屏幕分辨率的调整┋
  3. ┋                                                                                                         ┋
  4. ┋ 【1】: 运行原版游戏内容                                                                     ┋
  5. ┋                                                                                                         ┋
  6. ┋ 【2】: 运行导演剪辑版(a-e)                                                                ┋
  7. ┋                                                                                                         ┋
  8. ┋ 【3】: 运行导演剪辑版(f-j)                                                                  ┋
  9. ┋                                                                                                         ┋
  10. ┋ 【4】: 使游戏运行于Windows模式下                                                   ┋
  11. ┋                                                                                                         ┋
  12. ┋ 【5】: 使游戏运行于FullScreen模式下                                                ┋
  13. ┋                                                                                                         ┋
  14. ┋ 【6】: 使游戏运行于640x480分辨率下                                                ┋
  15. ┋                                                                                                         ┋
  16. ┋ 【7】: 使游戏运行于1280x960分辨率下                                              ┋
  17. ┋                                                                                                         ┋
  18. ┋ 【8】: 开启画面线性柔化                                                                     ┋
  19. ┋                                                                                                         ┋
  20. ┋ 【9】: 运行游戏 enjoy it!                                                                     ┋
  21. ┋                                                                                                         ┋
  22. ┋ 【0】: 退出本程序                                                                               ┋
  23. ┋                       感谢使用本软件(by Sniperhgy)                                  ┋
  24. ┋                                                                                                         ┋
  25. ┋                                  作者QQ:754972247                                        ┋
  26. ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝
  27. 游戏模式:原版游戏  画面模式:窗口模式  分辨率:640x480  线性柔化:开启
复制代码
在上述菜单中,文字会发生改变的就是最后那一行,请问,有什么办法可以
实现改变选项后,只刷新最后一行,而不用从开头部分都刷新一遍,我现在
只能是在选项改变后,cls,然后从菜单最开始从新显示一遍,这样的话就会
出现很明显的闪屏,让人很不舒服,请教知道的朋友,谢谢了

[ 本帖最后由 sniperhgy 于 2009-6-25 15:13 编辑 ]
1

评分人数

    • batman: 感谢主动给标题标注[已解决]字样PB + 2

用退格键来实现,示例如下:
  1. @echo off
  2. echo bathome
  3. echo batman
  4. set /p=bat<nul
  5. ping /n 4 127.1>nul
  6. for /l %%a in (1,1,3) do set /p=<nul
  7. set /p=vbs<nul
  8. pause>nul
复制代码
***共同提高***

TOP

谢谢版主回应,但是我还有几个问题:
1.set /p=bat<nul,这句是什么语法?为何能够实现向屏幕输出?
2.怎样打出?
3.如果要删除的内容长度不固定,要怎么办?
4.英文的长度和中文的长度好像不是一样的,如果既有中文又有英文,要怎么处理?

PS:关于第四点,比如我有一个字符串 str,然后我要做的是,如果str的长度与30比较,短了补*号,长了就截掉
,如果str里面只有当字节的字符,很好实现,但如果出现双字节的,就弄不出来的。还请版主赐教,谢谢了

TOP

1、在批处理中输出到屏幕有两种方式:echo和set /p =<nul,前者是换行输出,后者是
不换行输出。
2、关于退格的输入法,论坛有专贴予以说明,我建议楼主把它保存下来,用的时候复
制就好了。
3、如果删除的内容长度不固定,有两种方法:第一当确定要删除的内容字符数在80个
以内(一个汉字字符算两个),可直接for /l %%a in (1,1,80) do set /p= <nul;第二先判
断字符的长度,现根据判断出的字符总数来退格,这种方法比较麻烦,其中还要涉及到
汉字符的判断,建议非必要时不要采用。
4、判断汉字字符是个麻烦的事,如不要求很精准的话,可用以下语句来判断:if "%a%"
gtr "Z" echo %a%是汉字字符。
5、如你的问题已经得到解决,请在标题上加上[已解决]字样。

[ 本帖最后由 batman 于 2009-6-25 13:22 编辑 ]
***共同提高***

TOP

恩,谢谢版主再次的帮助,我现在就剩下一个问题了,如何精确判断一个字符串的长度。
对于  if "%a%" gtr "Z" echo %a%是汉字字符  是利用Acsii比较吗?貌似Z的acsii小于
z的阿,还有&的也是大于z的阿,请版主赐教,谢谢了

TOP

回复 4楼 的帖子

请问版主set /p= <nul和set /p=<nul有什么区别吗?我试了好像是一样的啊。

TOP

返回列表