JAVA调用vbScript脚本取得计算机信息小例子
来源:互联网 发布:php 输出时间格式 编辑:程序博客网 时间:2024/05/23 01:20
这里主要是记录下java如何调用vbscript取得计算机信息代码小例子,不说概念性东西.
下面的vbs文件,可以直接点击运行。有兴趣的同学可百度了解vbscript资料.
cpu.vbs
Set wmiObj = GetObject("winmgmts:")For Each cpu in wmiObj.ExecQuery("SELECT * FROM Win32_Processor") CALL WScript.Echo ("SysLoadPercentage: " & cpu.LoadPercentage)Next
disk.vbs
Set wmiObj = GetObject("winmgmts:")For Each disk in wmiObj.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE drivetype = 3") diskInfo = "LogicalDisk: " & disk.Name & ", " & disk.size & ", " & disk.freespace & ", " & disk.filesystem Call WScript.Echo(diskInfo)Next
Const C_COMMA = ", "Set wmiObj = GetObject("winmgmts:")Set refersher = CreateObject("WbemScripting.SWbemRefresher")Set disks = refersher.AddEnum(wmiObj, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSetrefersher.RefreshWScript.Sleep 100refersher.RefreshFor Each disk in disks diskIoInfoStr = "DiskIO: " & disk.Name & C_COMMA & disk.DiskBytesPerSec & C_COMMA & disk.DiskReadBytesPerSec & C_COMMA & disk.DiskWriteBytesPerSec Call WScript.Echo (diskIoInfoStr)Next
momery.vbs
Set wmiObj = GetObject("winmgmts:")For Each sys In wmiObj.Execquery("Select * From Win32_OperatingSystem") WScript.Echo "TotalPhysicalMemory: " & sys.TotalVisibleMemorySize WScript.Echo "FreePhysicalMemory: " & sys.FreePhysicalMemoryNext
process.vbs
Set wmiObj = GetObject("winmgmts:")For Each sys In wmiObj.Execquery("Select * From Win32_OperatingSystem") WScript.Echo "ProcessCount: " & sys.NumberOfProcessesNext
DiskUsage.java
package com.fei;import java.io.Serializable;public class DiskUsage implements Serializable{ private static final long serialVersionUID = -3383179074110556382L; private final String name; private final long totalBytes; private final long usableBytes; public DiskUsage(String name, long totalBytes, long usableBytes) { this.name = name; this.totalBytes = totalBytes; this.usableBytes = usableBytes; } public String getName() { return name; } public long getTotalBytes() { return totalBytes; } public long getUsedBytes(){ return getTotalBytes() - getUsableBytes(); } public long getUsableBytes() { return usableBytes; } public double getUsedRatio(){ return getUsedBytes() * 100.0 / getTotalBytes(); } @Override public String toString() { return "DiskUsage [name=" + name + ", totalBytes=" + totalBytes + ", usableBytes=" + usableBytes + "]"; }}
IORate.java
package com.fei;import java.io.Serializable;public class IORate implements Serializable { private static final long serialVersionUID = -1196061317002155422L; private final String name; private final long diskBytesPerSec; private final long diskReadBytesPerSec; private final long diskWriteBytesPerSec; public IORate(String name, long diskBytesPerSec, long diskReadBytesPerSec, long diskWriteBytesPerSec) { this.name = name; this.diskBytesPerSec = diskBytesPerSec; this.diskReadBytesPerSec = diskReadBytesPerSec; this.diskWriteBytesPerSec = diskWriteBytesPerSec; } public String getName() { return name; } public long getDiskBytesPerSec() { return diskBytesPerSec; } public long getDiskReadBytesPerSec() { return diskReadBytesPerSec; } public long getDiskWriteBytesPerSec() { return diskWriteBytesPerSec; } @Override public String toString() { return "IORate [name=" + name + ", diskBytesPerSec=" + diskBytesPerSec + ", diskReadBytesPerSec=" + diskReadBytesPerSec + ", diskWriteBytesPerSec=" + diskWriteBytesPerSec + "]"; }}
ExecutorUtil.java
package com.fei;import static java.text.MessageFormat.format;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.List;import org.apache.commons.exec.CommandLine;import org.apache.commons.exec.DefaultExecutor;import org.apache.commons.exec.Executor;import org.apache.commons.exec.PumpStreamHandler;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class ExecutorUtil { private static Log log = LogFactory.getLog(ExecutorUtil.class); public static List<String> syncExecute(String cmd) { Executor executor = new DefaultExecutor(); CommandLine commandLine = CommandLine.parse(cmd); ByteArrayOutputStream errorStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); executor.setStreamHandler(new PumpStreamHandler(outputStream, errorStream)); try { executor.setExitValues(null); int x = executor.execute(commandLine); log.debug("exitValue: " + x); String cmdOutput = outputStream.toString(); return lineToStringArray(cmdOutput); } catch (Throwable e) { String errorStreamMessage = errorStream.toString(); String exceptionMessage = format("执行命令\"{0}\"发生异常\"{1}\",命令行输出:\"{2}\"", cmd, e.getMessage(), errorStreamMessage); log.error(exceptionMessage, e); throw new Error(exceptionMessage); } } private static List<String> lineToStringArray(String str) throws IOException { List<String> lines = new ArrayList<String>(); BufferedReader br = new BufferedReader(new StringReader(str)); String line = br.readLine(); while (line != null) { if(line != null){ log.debug(line); lines.add(line); } line = br.readLine(); } br.close(); return lines; }}
Monitor.java
package com.fei;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Monitor {public static void main(String[] args) {System.out.println("========硬盘情况=========");System.out.println(Arrays.deepToString(getDiskUsages().toArray() ));System.out.println("========CPU使用率========");System.out.println(Arrays.deepToString(getLoadPercentages().toArray()));System.out.println("========硬盘IO速度========");System.out.println(Arrays.deepToString(getDiskIORates().toArray()));System.out.println("========进程数===========");System.out.println(getProcessCount());System.out.println("=========总内存==========");System.out.println(getTotalPhysicalMemory());System.out.println("=========可用内存=========");System.out.println(getFreePhysicalMemory());}private static String getVbScriptPath(String fileName){String path = Monitor.class.getResource("").getPath()+fileName;return path.substring(1);}private static List<String> runVbScript(String fileName) {String filePath = getVbScriptPath(fileName); try { return ExecutorUtil.syncExecute("cscript.exe " + filePath+ " //NOLOGO"); } catch (Throwable ex) { ex.printStackTrace(); throw new Error(ex.getMessage()); } }private static List<DiskUsage> getDiskUsages() { List<DiskUsage> usages = new ArrayList<DiskUsage>(); for(String line : runVbScript("disk.vbs")){ if (line.startsWith("LogicalDisk:")) { line = line.replace("LogicalDisk:", ""); String[] ss = line.split(","); if (ss[1] != null) { long totalBytes = Long.parseLong(ss[1].trim()); long freeBytes = Long.parseLong(ss[2].trim()); DiskUsage usage = new DiskUsage(ss[0].trim(), totalBytes, freeBytes); usages.add(usage); } } } return usages; }private static List<Integer> getLoadPercentages() { List<Integer> percentages = new ArrayList<Integer>(); for(String line : runVbScript("cpu.vbs")){ if (line.startsWith("SysLoadPercentage:")) { line = line.replace("SysLoadPercentage:", ""); if (line == null || "".equals(line.trim())) { line = "0"; } Integer percentage = Integer.valueOf(line.trim()); percentages.add(percentage); } } return percentages; }private static List<IORate> getDiskIORates() { List<IORate> rates = new ArrayList<IORate>(); for(String line : runVbScript("io.vbs")){ if(line.startsWith("DiskIO:")){ String[] ss = line.replace("DiskIO:", "").split(","); if (ss[1] != null) { IORate rate = new IORate(ss[0].trim(), Long.valueOf(ss[1].trim()), Long.valueOf(ss[2].trim()), Long.valueOf(ss[3].trim())); rates.add(rate); } } } return rates; }private static int getProcessCount() { for(String line : runVbScript("process.vbs")){ if (line.startsWith("ProcessCount:")) { line = line.replace("ProcessCount:", "").trim(); return Integer.valueOf(line); } } return -1; }private static long getTotalPhysicalMemory() { for(String line : runVbScript("memory.vbs")){ if (line.startsWith("TotalPhysicalMemory:")) { line = line.replace("TotalPhysicalMemory:", "").trim(); return Long.valueOf(line) * 1024; } } return -1; }private static long getFreePhysicalMemory() { for(String line : runVbScript("memory.vbs")){ if (line.startsWith("FreePhysicalMemory:")) { line = line.replace("FreePhysicalMemory:", "").trim(); return Long.valueOf(line) * 1024; } } return -1; }}
运行结果图:
这里主要取了CPU、内存等几个信息,大家利用WMI的API或者借助JSEDIT获取到更多的信息。下面列出了常用信息的类:Win32_Processor // CPU 处理器Win32_PhysicalMemory // 物理内存Win32_Keyboard // 键盘Win32_PointingDevice // 点输入设备,如鼠标Win32_DiskDrive // 硬盘驱动器Win32_CDROMDrive // 光盘驱动器Win32_BaseBoard // 主板Win32_BIOS // BIOS 芯片Win32_ParallelPort // 并口Win32_SerialPort // 串口Win32_SoundDevice // 多媒体设置Win32_USBController // USB 控制器Win32_NetworkAdapter // 网络适配器Win32_NetworkAdapterConfiguration // 网络适配器设置Win32_Printer // 打印机Win32_PrinterConfiguration // 打印机设置Win32_PrintJob // 打印机任务Win32_TCPIPPrinterPort // 打印机端口Win32_POTSModem // MODEMWin32_POTSModemToSerialPort // MODEM 端口Win32_DesktopMonitor // 显示器Win32_VideoController // 显卡细节。Win32_VideoSettings // 显卡支持的显示模式。Win32_TimeZone // 时区Win32_SystemDriver // 驱动程序Win32_DiskPartition // 磁盘分区Win32_LogicalDisk // 逻辑磁盘Win32_LogicalMemoryConfiguration // 逻辑内存配置Win32_PageFile // 系统页文件信息Win32_PageFileSetting // 页文件设置Win32_BootConfiguration // 系统启动配置Win32_OperatingSystem // 操作系统信息Win32_StartupCommand // 系统自动启动程序Win32_Service // 系统安装的服务Win32_Group // 系统管理组Win32_GroupUser // 系统组帐号Win32_UserAccount // 用户帐号Win32_Process // 系统进程Win32_Thread // 系统线程Win32_Share // 共享Win32_NetworkClient // 已安装的网络客户端Win32_NetworkProtocol // 已安装的网络协议
0 0
- JAVA调用vbScript脚本取得计算机信息小例子
- java直接调用python脚本的例子
- 使用vbscript脚本调用web服务
- 使用vbscript脚本调用web服务
- 使用vbscript脚本调用web服务
- *JAVA调用DLL简单小例子*
- JAVA调用DLL简单小例子
- memcache Java客户端调用小例子
- java jruby相互调用小例子
- memcache Java客户端调用小例子
- memcache Java客户端调用小例子
- 如何取得数据库对象的脚本信息
- Java中使用VBScript获取硬件信息
- 调用WebService 小例子
- java调用shell脚本,并获得结果集的例子
- java调用shell脚本,并获得结果集的例子
- java调用shell脚本,并获得结果集的例子
- java调用shell脚本,并获得结果集的例子
- 看example源码学spark系列(3)-BroadcastTest
- 一次JVM内存调优的分享
- Apple Swift语言新手教程(2)
- 今天天气好晴朗
- 15.5 匿名内部类
- JAVA调用vbScript脚本取得计算机信息小例子
- json后台向前台传数据
- etc文件夹下面有什么
- AWR生成步骤
- VS2013 ultimate 系统中不到指定文件
- API hook
- PHP在linux上执行外部命令(整理)
- 另外:BAPI的操作都要用BAPI_TRANSACTION_COMMIT来提交
- “ora-12541:TNS:无监听程序”问题的解决