系统:Windows XP IOT (EMT...)
工具:pstool (32位)、RW
环境:CMD
例子代码如下:
@echo on
@REM 切换到当前文件夹路径
cd /d "%~dp0"
@rem "获取CPU使用率"
@REM typeperf "\Processor(_Total)\%% Processor Time" -sc 1 > cpu.log
@REM for /f "skip=2 tokens=2 delims=," %%a in ('find /V "" ^< cpu.log') do (
@REM set "CPU_USAGE=%%a"
@REM )
wmic path Win32_PerfFormattedData_PerfOS_Processor get Name,PercentProcessorTime > cpu.log
for /f "skip=5 tokens=2 delims= " %%a in ('type cpu.log') do (
set "CPU_USAGE=%%a"
)
@rem "获取内存使用情况(总物理内存与可用内存计算使用率)"
for /f "tokens=2 delims==" %%a in ('wmic OS get TotalVisibleMemorySize /value') do set TOTAL_MEM=%%a
for /f "tokens=2 delims==" %%b in ('wmic OS get FreePhysicalMemory /value') do set FREE_MEM=%%b
set /a MEM_USAGE=((%TOTAL_MEM%-%FREE_MEM%)*100/%TOTAL_MEM%)
@REM 创建一个临时文件名
set "tempFile=%CD%\temp.txt"
@REM 在后台执行pslist并将输出重定向到临时文件
.\PSTools\pslist.exe -s 2 IPCWork > "%tempFile%"
for /f "skip=7 tokens=3 delims= " %%a in ('type %tempFile%') do (
set "IPCWORK_CPU_USAGE=%%a"
goto :breakLoop
)
:breakLoop
@REM "将结果写入文件"
type nul > log.txt
echo %date% >>SystemStats.txt
echo System CPU Usage: %CPU_USAGE%%% >>log.txt
echo Memory Usage: %MEM_USAGE%%% >> log.txt
echo IPCWork.exe CPU Usage: %IPCWORK_CPU_USAGE%%% >> log.txt
@REM 删除临时文件
del cpu.log
del "%tempFile%"
pause
@REM RW读写PCIE设备配置空间
setlocal enabledelayedexpansion
set "pci_tree_file=pci_tree.log"
set "result_log=log.txt"
set "newline=^"
@REM 导出pcie信息
Rw.exe /Command="PCITREE" /stdout /nologo > %pci_tree_file%
@REM 清空result.log上一次的结果
type nul > %result_log%
@REM 从pcie树信息中提取BDF,并使用RW指令输出PCIE配置空间信息到result.log
for /f "skip=1 tokens=2,4,6 delims=, " %%a in (%pci_tree_file%) do (
echo Bus: %%a Device: %%b Function: %%c
echo Bus: %%a Device: %%b Function: %%c >> %result_log%
Rw.exe /Command="SAVE a.rw PCI 0x%%a 0x%%b 0x%%c" /stdout /nologo >> %result_log%
echo !newline! >> %result_log%
)
del %pci_tree_file%