需要搜索一个 csv 文件和 运行 一个关于值的 if/Where 语句来初始化一个 bat 文件

Need to Search an csv file and run an if/Where statement on the value to initialize a bat file

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

这是我拼图的最后一块。

cmd 和 power 中的所有内容shell 据我所知

它有一个包含三个字段的 header,然后是 4 个信息单元格。 (A2, B2, A3, B3)

powershell -command {Import-Csv -Path 'C:\PerfLogs\Admin\New Data Collector Set\Memory DataCollector01.csv' | Where{ $_.B3 -gt  "70.000000000000000"} | start-process $env:userprofile\Desktop\creatvent.bat}\

这是 power shell 和记事本中的性能报告输出:

(PDH-CSV 4.0) (Eastern Daylight Time)(240) \LT305-MIA\Memory\% 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-MIA\Memory\% 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"," "

我想让这段代码正常工作。正确知道它 运行s 每次(无论值)我需要它正确地 运行。

抱歉,如果我没有理解正确,这是我的示例 .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

你能试试看结果吗?

由于您的文件(如您所示)只有三列包含实际数据并且使用的 header 不是很友好,我建议您这样做:

  • 使用 Get-Content.
  • 将文件读取为字符串数组
  • 跳过难看的 header 行
  • 使用自定义 headers
  • 将其余行转换为 CSV
  • 使用 Where-Object 子句在第二列中搜索数值大于 70 的值
if (Get-Content -Path 'C:\PerfLogs\Admin\New Data Collector Set\Memory 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:userprofile\Desktop\creatvent.bat"
}