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

[特效代码] 关于mode命令的副作用?!

我的程序在不用mode命令时,如果程序提示信息过多时可以通过滚动条回看前面的信息,可是使用mode后,就不出现滚动条了,所以只能看当前窗口里的信息(遮住了上页的信息)。
我提示信息的命令不是批处理命令,没法用/p这个辅助功能。
在这样的情况下应该怎么解决,在继续使用mode命令的前提下?

出现故障时,mode有可能导致系统错误,会自动关掉所有程序,并关掉explorer.exe,出现假死机状态。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

2# cjiabing


并没有出现其他错误,只是没有可以翻看上页信息的滚动条了!

TOP

本帖最后由 batman 于 2011-4-22 16:16 编辑

只要你重设的lines不小于总输出行数是没有问题的:
  1. @echo off
  2. mode con cols=20 lines=201
  3. for /l %%a in (1,1,200) do echo %%a
  4. pause>nul
复制代码
注:上面代码的总输出行数是200+1(200行数字加一行空行)
***共同提高***

TOP

4# batman


谢谢,可是你看Win+r调出来的命令窗口,出来就带有滚动条。而且它的窗口高度也没有撑满屏幕。
为什么不可以在批处理里实现它那样的效果?
现在主要想以这样的方法解决:即可以自定义窗口line,col也可以让它通过滚动条翻看上页的信息。

TOP

  1. @echo off
  2. mode con
  3. ::可以看到,此处的lines不是当前行数而是缓冲区行数,我估计mode命令并没有区分出缓冲区与显示的行数,要想改变窗口大小而不改变缓冲区行数,估计要用debug或者外部命令,最简陋的办法也要修改注册表相应键值再重启自身吧
复制代码

TOP

本帖最后由 hanyeguxing 于 2011-4-22 22:59 编辑

mode 命令用来设置屏幕缓冲区数据,而非窗口大小
cmd.exe 默认屏幕缓冲高度300行(屏幕高度默认25),超过这个依然无法显示;当对 cmd 属性设置的显示缓冲高度小于25时,窗口高度也会随着更改。
当缓冲高度小于等于显示高度时,命令解释器强制显示高度与缓冲高度相同;同时取消右侧拉条,这和使用不使用 mode 没有关系
如果要单独改显示大小,参考这里:http://www.bathome.net/thread-2285-1-1.html
可以使用 more 命令辅助分屏显示:
  1. @echo off
  2. mode con cols=20 lines=20
  3. (
  4. echo;当显示行大于等于缓冲行数时需要此行用来对冲 -- More  -- 行
  5. for /l %%a in (1,1,500) do @echo %%a
  6. )|more
  7. pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

7# hanyeguxing
谢谢,对于批处理命令确实达到不错的效果。可是我使用的是java编译的命令,即不是批处理命令,所以它没有你所举实例的效果。
有些小郁闷,难道真的达不到那样的效果?那个编译错误提示的信息使用>符都不能把内容加载到文件中...唉

TOP

返回列表