我正在使用命令“typeperf”来表示特定程序使用的带宽(在本例中为spotify)。我需要从typeperf命令重复检索一个数值,但typeperf的输出包含不需要的文本。基于我的研究,我使用“For / F”将typeperf输出存储到变量中,但它似乎是typeperf的多行输出,并且可能它的计算时间导致我没想到的结果。如何让变量“bndwdth”保持值“44433.214648”?
基本命令:
typeperf "\Process(spotify)\IO Data Bytes/sec" -sc 1
输出:
"(PDH-CSV 4.0)","\\name\Process(spotify)\IO Data Bytes/sec"
"10/28/2014 10:31:09.250","44433.214648"
尝试解决方案:
For /F "Tokens=2 delims=," %I in ('typeperf "\Process(spotify)\IO Data Bytes/sec" -sc 1') Do Set bndwdth=%I
输出:
C:\Users\name\Desktop>Set bndwdth="\\name\Process(spotify)\IO Data Bytes/sec"
C:\Users\name\Desktop>Set bndwdth="44433.214648"
C:\Users\name\Desktop>Set bndwdth= please wait...
感谢您的帮助!
答案 0 :(得分:0)
据推测,您的实际代码每次迭代都会调整值,以便您获得多行输出。
您可以使用FINDSTR过滤掉不需要的行。
for /f "tokens=2 delims=," %I in (
'typeperf "\Process(spotify)\IO Data Bytes/sec" -sc 1^|findstr /rc:"../../.... ..:..:.."'
) do set "bndwdth=%I"
更新以回复评论
|
是管道运算符,它在左侧获取命令的输出,并将其作为输入指向右侧的命令。 |
在FOR / F IN()子句中使用。此子句需要额外的解析层,因此|
必须转义为^|
。
FINDSTR /RC:"string"
选项相当于/R /C:"string"
。 /C:"string"
选项有两个效果:1)它将整个字符串视为单个搜索词,即使有空格也是如此。 2)默认将字符串视为文字搜索。 / R选项会覆盖默认值,并使搜索被视为正则表达式。