先上成品图

需求描述

我们电脑上都安装各种过监控软件,比如360、鲁大师等等。。。其中有一个功能就是性能监控,在安全行业里面通常叫做“配置核查”,目的就是将主机的各种性能指标展示,指标包括CPU状态、内存状态、磁盘状态等等。。。本次的程序目的就是通过编写bat脚本,实现我们PC电脑上自己实现的“性能监控”系统。本次配置核查的内容包括:CPU、内存、磁盘、网络端口、自启程序。做过一次配置之后,就可以轻松的把自己需要的主机信息拿到手了。

环境说明

开发环境:任意文本编辑器

运行环境:windows全平台

开发思路

  1. 新建文件,命名为inspecion.bat(最终运行脚本)和test.bat(测试脚本)

  2. 在test.bat中编写每一个要实现的功能并测试

  3. 将test.bat中测试成功后的功能组合在一起,写入到inspection.bat中

  4. 运行,测试最终运行结果

开发步骤

对思路中的第二点进行讲解

  • 采集cpu信息
rem 采集cpu信息,若多核,则显示多条结果
for /f "skip=1" %%i in ('wmic CPU GET LoadPercentage') do (
if %%i geq 0 set cpuStr=%%i%%
)
echo CPU使用率:%cpuStr%
  • 采集内存信息
rem 采集内存总容量
for /f "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do (
if %%i geq 0 set totalMem=%%i
)
set /a tmp=%totalMem%/1024
set totalMem=%tmp:~0,-3%.%tmp:~-3%G echo 总内存容量:%totalMem%
echo -----------------------------------------
rem 设置2秒的延迟
ping 127.0.0.1 -n 2 > null rem 采集可用内存容量
for /f "skip=1" %%i in ('wmic os get FreePhysicalMemory') do (
if %%i geq 0 set freeMem=%%i
)
set /a tmp=%freeMem%/1024
set freeMem=%tmp:~0,-3%.%tmp:~-3%G echo 空闲内存容量:%freeMem%
  • 采集磁盘信息
rem 采集磁盘信息
echo 磁盘信息(可用/总量)
wmic LOGICALDISK get DeviceID,FreeSpace,Size > tmp.txt
for /f "skip=1 tokens=1,2,3*" %%i in ('type tmp.txt') do (
set totalDisk=%%k
set freeDisk=%%j
set /a tmp1=!freeDisk:~0,-5!/1074
set /a tmp2=!totalDisk:~0,-5!/1074
set diskStr=%%i!tmp1:~0,-1!.!tmp1:~-1!G/!tmp2:~0,-1!.!tmp2:~-1!G
echo !diskStr!
)
del tmp.txt
  • 采集TCP端口信息
echo TCP port:
FOR /F "tokens=3,5* delims=: " %%i IN ('netstat -anp tcp') do (
if %%k == LISTENING set tcpStr=!tcpStr!%%i
)
echo %tcpStr%
  • 采集UDP端口信息
echo UDP port:
FOR /F "tokens=1,2,3* delims=: " %%i IN ('netstat -anp udp') do (
if %%i == UDP set udpStr=!udpStr!%%k
)
echo %udpStr%
  • 显示自启程序的执行路径
echo 自启程序路径:
rem for /f "skip=1" %%i in ('wmic STARTUP GET Command') do (
rem echo %%i
rem )
wmic STARTUP GET Command

这套脚本可以放在成型的大型程序里面,作为一个基础的功能模块。

源代码打包下载

下载地址

提取码:se7z

最新文章

  1. [Android]使用Dagger 2来构建UserScope(翻译)
  2. 为 WSUS 服务器定期运行清理向导
  3. 东大OJ-一元三次方程解的个数
  4. [leetcode]Binary Tree Right Side View
  5. 怎样用Zbrush中的Curves Tubes创建手指
  6. new Date()的数据类型的问题
  7. Struts2 学习笔记 11 Result part2
  8. SQL_CURSOR_游标循环
  9. memcached完全剖析--1
  10. notepad++插件使用说明
  11. 7 RandomAccessFile读取文件内容保存--简单例子(需要验证)
  12. 类似QQ侧滑菜单功能实现
  13. SOA,不看你永远不知道的事
  14. iOS证书深究
  15. [Usaco2007 Jan]Running贝茜的晨练计划[一般DP]
  16. es6学习笔记--字符串&数值&数组&函数&对象的扩展
  17. poj-2909-哥德巴赫猜想
  18. 想在Java中实现Excel和Csv的导出吗?看这就对了
  19. BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
  20. Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]

热门文章

  1. 同过增强Connection类[重写了close的方法]实现的从连接池取出连接并放回连接的简单的实现流程
  2. MyBatis Generator 学习
  3. 应用于Java中的一个开源的表达式语言(Expression Language)
  4. hdu 1425:sort(排序,经典题。快排模板)
  5. 关于js中遍历总结
  6. 【python】NLTK好文
  7. 搭建 Docker-Registry 私有仓库
  8. 简单配置Nginx 指向本地端口,并开启SSL
  9. ETL概念,ETL流程
  10. SurvivalShooter学习笔记(九.游戏暂停、结束)