Board logo

标题: [系统相关] 批处理怎样查询当前时间点操作系统信息? [打印本页]

作者: yukang2634    时间: 2011-5-31 11:17     标题: 批处理怎样查询当前时间点操作系统信息?

我现在想利用批处理文件查询当前时间点操作系统的三个信息:CPU负载、内存使用量及各磁盘分区的剩余空间并能导出结果到txt文件。但是个人能力有限,不会编写这样的批处理文件,所以想请各位精通批处理的网友帮帮忙给编写一个,先谢过了。
我在网上有找到一个查询当前时间点操作系统CPU负载&内存使用量的批处理,也找到了一个查询当前时间点操作系统磁盘分区剩余空间的批处理。可不会将这两个合并为一个批处理文件,如能帮忙合并成一个也行,也先谢过了。两个批处理文件我打包上传了。
第一个代码:
  1. @echo off
  2. color 2
  3. setlocal EnableDelayedExpansion
  4. set /a memory=0
  5. for /f "tokens=1,2,3,4" %%a in ('tasklist /FO LIST ^| find "内存使用"') do (
  6. REM echo %%a %%b %%c
  7. for /f "tokens=1,2,3,4 delims=," %%i in ('echo %%c') do (
  8.   set /a data=%%i
  9.   if not "%%j"=="" (
  10.    set data1=%%j
  11.    
  12.    set bit1=!data1:~0,1!
  13.    if !bit1!==0 set data1=!data1:~1!
  14.    REM echo data1=!data1!
  15.    
  16.    set bit1=!data1:~0,1!
  17.    if !bit1!==0 set data1=!data1:~1!
  18.    REM echo data1=!data1!
  19.    
  20.    set /a data=data*1000+!data1!
  21.   )
  22.   if not "%%k"=="" (
  23.    set data1=%%k
  24.    
  25.    set bit1=!data1:~0,1!
  26.    if !bit1!==0 set data1=!data1:~1!
  27.    REM echo data1=!data1!
  28.    
  29.    set bit1=!data1:~0,1!
  30.    if !bit1!==0 set data1=!data1:~1!
  31.    REM echo data1=!data1!
  32.    
  33.    set /a data=data*1000+!data1!
  34.   )
  35. )
  36. set /a memory=memory+data
  37. )
  38. set /a memoryMB=!memory!/1024
  39. echo 内存使用 !memoryMB! MB
  40. for /f "skip=1" %%i in ('wmic CPU get loadpercentage') do echo CPU使用 %%i%
  41. pause>nul
  42. %0
复制代码
第二个代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :Main
  4. cls
  5. set /a num2=1024*1024
  6. for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  7.     set num1=0
  8.     set num3_str=
  9.     set num4=
  10.     for /f "tokens=3" %%j in ('dir /-c %%i:\ 2^>nul') do set num1=%%j
  11.     if not "!num1!"=="0" (
  12.         call :loop
  13.         for /f "delims=0 tokens=*" %%k in ("!num3_str!") do set num3_str=%%k
  14.         echo.
  15.         echo        %%i 盘剩余空间为 !num3_str! MB
  16.         echo.
  17.     )
  18. )
  19. pause
  20. goto Main
  21. :loop
  22. set /a num3=%num4%%num1:~0,1%/%num2%
  23. set num3_str=%num3_str%%num3%
  24. set /a num4=%num4%%num1:~0,1%%%%num2%
  25. if %num4% equ 0 set num4=
  26. set num1=%num1:~1%
  27. if not "%num1%"=="" goto loop
  28. goto :eof
复制代码

作者: Batcher    时间: 2011-5-31 19:50

请把代码直接贴到顶楼,以便他人查看。
作者: yukang2634    时间: 2011-6-1 11:21

我使用vbs代码实现这个功能了,所以这个问题我不问了。
作者: Batcher    时间: 2011-6-1 12:52

3# yukang2634


把你的VBS代码贴出来给大家看看吧
作者: sky02    时间: 2011-6-1 17:48

本帖最后由 sky02 于 2011-6-1 18:13 编辑

1# yukang2634


其实可以简单一点的
  1. wmic path Win32_PerfFormattedData_PerfOS_Processor get PercentProcessorTime /value    查询CPU占用率
  2. wmic path Win32_PerfFormattedData_PerfOS_Memory get * /value^ | findstr "AvailableBytes"    查询可用物理内存
  3. wmic logicaldisk where deviceID="c:" get freespace   查询C盘剩余空间
复制代码

作者: yukang2634    时间: 2011-6-2 17:20

我也是从网上找到的三个查询当前时间点CPU、内存使用率,磁盘空间剩余量的VBS的。把我上传的hard、ram、cpu三个文本文件扩展名更改为vbs,把info文本文件扩展名更改为.bat,运行一下.bat文件就可以查出结果并导入到txt文件中。如果再配合使用计划任务和net use命令的话还可以定时通过网络传到你想放置的地方。
当初我是因为每天都要点检服务器,觉得一个一个登陆去看太麻烦,所以才想到这样。大家有什么其他的建议能简化日常工作的,欢迎提出来,谢谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2