需要搜索 csv 文件并对值运行 if/Where 语句以初始化 bat 文件



想要在系统内存使用量超过70%时清除缓存 我有一个任务计划程序来开始监视,一个性能日志的数据收集,并将报告导出为 csv,一个自定义事件视图来触发清除,以及一个 bat 文件来清除缓存。

这是我拼图的最后一块。

据我所知,cmd和powershell中的所有内容都已被使用

它有一个带有三个字段的标题,然后是 4 个信息单元格。(A2B2A3B3(

powershell -command {Import-Csv -Path 'C:PerfLogsAdminNew Data Collector SetMemory DataCollector01.csv' | Where{ $_.B3 -gt  "70.000000000000000"} | start-process $env:userprofileDesktopcreatvent.bat}

这是电源外壳和记事本中输出的性能报告:

(PDH-CSV 4.0) (Eastern Daylight Time)(240) \LT305-MIAMemory% Committed Bytes In Use Collect memory data usage percentage
------------------------------------------ ------------------------------------------- ------------------------------------  
08/19/2019 12:18:32.480                   41.363952528071579  
08/19/2019 12:19:32.467                   41.291049993897566

"(PDH-CSV 4.0) (Eastern Daylight Time)(240)","\LT305-MIAMemory% Committed Bytes In Use","Collect memory data usage percentage"
"08/19/2019 15:38:37.582","47.54470529676059"," "
"08/19/2019 15:39:37.569","47.43784841788883"," "

我想让这段代码正常工作。知道它每次运行(无论值如何(我需要它才能正常运行。

由于您的文件(如您所显示的(只有三列包含实际数据并且使用不太友好的标题,因此我建议您这样做:

  • 使用Get-Content将文件读取为字符串数组。
  • 跳过丑陋的标题行
  • 使用自定义标题将其余行转换为 CSV
  • 使用Where-Object子句在第二列中搜索数字大于 70
  • 的值
if (Get-Content -Path 'C:PerfLogsAdminNew Data Collector SetMemory DataCollector01.csv' | 
Select-Object -Skip 1 | 
ConvertFrom-Csv -Header 'Date','MemoryUsage','DataUsage' | 
Where-Object { [int]$_.MemoryUsage -gt 70 }) {
# in here, run your .bat file to clear the cache
Start-Process "$env:userprofileDesktopcreatvent.bat"
}

抱歉,如果我理解不正确,这是我的示例.csv:

h1;h2;h3;
08/19/2019;12:18:32.460;41.363952528071579
08/19/2019;12:19:32.467;41.291049993897566
08/19/2019;12:18:31.480;78.363952528073254

并执行此代码:

Import-Csv .file.csv -Delimiter ";" | Where-Object -Property h3 -gt 77

控制台中显示的结果:

h1         h2           h3
--         --           --
08/19/2019 12:18:31.480 78.363952528073254

你能尝试一下并让结果知道吗?

相关内容

  • 没有找到相关文章

最新更新