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

[其他] [已解决]批处理中类似dir|more命令一样将执行结果分屏显示

我的批处理窗口已设为固定的大小了。
但执行一些循环的命令的时候,执行结果往往超出我的窗口显示,而没有滚动条。
哪位有解决的办法?我加分。

如果我表述不清,大家看如下代码:
  1. ::code by youxi01@xp_cmd,2007-3-28
  2. ::初始
  3. @echo off& mode con cols=101 lines=23
  4. setlocal enabledelayedexpansion
  5. color 1f
  6. title 进程使用端口分析程序
  7. ::初始定义
  8. set "space=                   "
  9. ::定义初始进程
  10. ::在这里你可以加入你认为安全的进程
  11. if not exist ProcessList.ini (
  12. echo System
  13. echo smss.exe
  14. echo csrss.exe
  15. echo winlogon.exe
  16. echo services.exe
  17. echo lsass.exe
  18. echo svchost.exe
  19. echo spoolsv.exe
  20. echo Explorer.EXE
  21. echo realsched.exe
  22. echo SOUNDMAN.EXE
  23. echo ctfmon.exe
  24. echo QQ.exe
  25. echo TIMPlatform.exe
  26. echo alg.exe
  27. echo Qzone.exe
  28. echo Maxthon.exe
  29. echo TTPlayer.exe
  30. echo conime.exe
  31. echo QQPlayerSvr.exe
  32. echo NOTEPAD.EXE
  33. echo cmd.exe
  34. echo tasklist.exe
  35. echo wmiprvse.exe)>>ProcessList.ini
  36. for /f %%i in (ProcessList.ini) do set "%%i=A"
  37. echo                               ╭─────╮
  38. echo           ╭─────────┤ 程序说明 ├────────╮
  39. echo           │                  ╰─────╯                │
  40. echo           │   本程序能够检测当前计算机正在运行进程所使用的 │
  41. echo           │                                                │
  42. echo           │端口,并能够对非常见进程提出警示 //             │
  43. echo           ╰────────────────────────╯
  44. echo.
  45. echo            正在查询,请稍等...
  46. echo          ╔═════════════════════════╗
  47. echo          ║ 进程名              标识类型    协议类型   端口  ║
  48. echo          ║ _________________________________________________║
  49. ::查询进程的PID号
  50. ::提取进程的PID号,并将其值设置为该进程的 名称
  51. for /f "skip=4 tokens=1,2" %%i in ('tasklist') do set %%j=%%i
  52. ::查询以TCP协议使用的端口
  53. call :QueryPort TCP 5
  54. echo          ║ _________________________________________________║
  55. call :QueryPort UDP 4
  56. echo          ╚═════════════════════════╝
  57. echo           按任意键继续...
  58. pause>nul
  59. if !num! GTR 0 (goto :NO) else goto :OK
  60. :NO
  61. echo.
  62. echo           【评估】你的计算机可能存在风险
  63. echo.
  64. echo           以下进程为未定义进程,并正在使用端口通信,可能为木马 ^>^>
  65. echo           ____________________________________________________
  66. for /l %%i in (1 1 %num%) do  (
  67.     if not defined !UnPro%%i! echo !UnPro%%i! && set !UnPro%%i!=A )
  68. goto :exit
  69. :OK
  70. echo.
  71. echo           【评估】你的计算机看起来似乎是安全的。
  72. echo           ____________________________________________________
  73. :exit
  74. pause>nul
  75. exit
  76. ::查询端口类型"函数"
  77. ::函数说明:
  78. REM PortType 为协议类型,可以为TCP,也可以为UDP
  79. REM Num 为参数号,TCP协议中的第五个参数为PID号,而UDP的则为第四个。
  80. :QueryPort PortType Num
  81.     for /f "skip=4 tokens=2,%2" %%i in ('netstat -ano -p %1') do (
  82.         call :LineUp "║ !%%j!" 21 Pro
  83.         for /f "tokens=2 delims=:" %%a in ("%%i") do set Port=%%a
  84.         if /I defined !%%j! (set ProType=→正常) else (
  85.              set ProType=未定义
  86.              set/a num+=1
  87.              set UnPro!num!=!%%j!
  88.            )
  89.         call :LineUp !ProType! 8 ProType
  90.         call :LineUp %1 10 PortType
  91.         call :LineUp !Port! 6 Port
  92.         echo          !Pro! !ProType! !PortType! !Port!║
  93.       )
  94.     goto :eof
  95. ::对齐目标
  96. ::函数说明:
  97. REM OBJ 为对齐要操作的对象;Len为对齐操作的长度;Name为返回的变量名。
  98. :LineUp OBJ Len Name
  99.     set obj=%~1%space%
  100.     set %3=!obj:~0,%2!
  101. goto :eof
复制代码
1

评分人数

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

::code by youxi01@xp_cmd,2007-3-28
::初始
@echo off
setlocal enabledelayedexpansion

TOP

回复 2楼 的帖子

嗯,谢谢版主.

固定大小窗口就没办法了么?
我打算把一些常用的功能整合在一起,一个大的功能为父菜单,其下包括的功能为子菜单.
父菜单设成固定大小的话,子菜单不指定大小的话也会继承父菜单窗口的大小,所以一屏显示很多内容的话,有的就显示不出来了.
我现在临时采用的办法就是子菜单设定一个Line比父菜单Line大的值,这样可以显示下,但视觉上有点突然.

[ 本帖最后由 Loading 于 2009-3-8 23:02 编辑 ]

TOP

目前菜取的一个方法,还算有效:
  1. tasklist>>%temp%\temp.txt
  2. more /c %temp%\temp.txt
  3. .............................
  4. del %temp%\temp.txt
复制代码

TOP

测试了一下编写不错,有很多可取之处

TOP

返回列表