【发布时间】:2015-05-01 18:33:41
【问题描述】:
我正在尝试将性能计数器中的指标值存储在变量中
FOR /F "tokens=1-2 delims==,¶" %%I IN ('typeperf "\Memory\Available bytes" -sc 1') DO (
ECHO I %%I, J %%J
)
但是 for 循环的每次迭代都会覆盖前一行中的变量。有什么建议吗?
【问题讨论】:
标签: windows loops batch-file
我正在尝试将性能计数器中的指标值存储在变量中
FOR /F "tokens=1-2 delims==,¶" %%I IN ('typeperf "\Memory\Available bytes" -sc 1') DO (
ECHO I %%I, J %%J
)
但是 for 循环的每次迭代都会覆盖前一行中的变量。有什么建议吗?
【问题讨论】:
标签: windows loops batch-file
@echo off
setlocal enableDelayedExpansion
FOR /F "skip=1 tokens=1-2 delims==,¶" %%I IN ('typeperf "\Memory\Available bytes" -sc 1') DO (
if "%%~I" equ "Exiting" goto :break
set "datet=%%~I"
set "datet=!datet: =!"
set "!datet!=%%~J"
)
:break
set !datet!
这是你想要达到的目标吗?
【讨论】:
@ECHO OFF >NUL
SETLOCAL enableextensions enabledelayedexpansion
:: number of samples
set "iiIters=5"
:: iteration counter
set /A "iiCnt=0"
FOR /F "tokens=1-2 delims=," %%I IN (
'typeperf "\Memory\Available bytes" -sc %iiIters%^| findstr /R ".*\",\".*"') DO (
set "iiValName[!iiCnt!]=%%~I"
set "iiValValue[!iiCnt!]=%%~J"
set /A "iiCnt+=1"
)
:: display result
set ii
在上面的代码 sn-p 中,来自性能计数器的数据存储在类似数组的变量中:
iiValName[0] :输出格式(CSV 标头);iiValValue[0]:\\Computer\Object(Instance)\Counter 格式的性能计数器的全名(CSV 标头);iiValName[n] :特定的采样日期和时间 (n >= 1);iiValValue[n]:对应的指标值(n >= 1)。资源(必读):
【讨论】:
谢谢大家的回答。我选择使用 Powershell 并通过它实现了我想要的结果 -
`$freespace = Get-Counter "\LogicalDisk(_Total)\% Free Space"
$f = $freespace.countersamples | Select-Object -Property RawValue
$fVal = $f.rawvalue`
我只是需要一种将性能计数器的值存储在变量中的方法。
【讨论】: