You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本需求:持续监控更新文本并统计指定字符串实例数

如何用PowerShell持续监控日志文件并统计指定字符串的出现次数(覆盖写入结果)

我有一个从游戏持续更新数据的文本文件,希望编写PowerShell脚本,持续监控该文件并统计其中指定文本字符串“Ride On Received”的实例数,将统计结果写入另一个文本文件或CSV,且新计数需覆盖旧计数。当前我已有代码:

$FileContent = Get-Content "Log.txt"
$Matches = Select-String -InputObject $FileContent -Pattern "Ride On Received" -AllMatches
$Matches.Matches.Count

请问如何修改以实现持续监控及覆盖写入计数的功能?


我来帮你改造这个脚本,完美实现持续监控和覆盖写入的需求,下面是完整方案:

完整修改后的脚本

# 配置参数 - 可根据你的实际路径和需求调整
$logPath = "Log.txt"
$outputPath = "RideOnCount.txt" # 换成 "RideOnCount.csv" 即可输出CSV格式
$targetString = "Ride On Received"
$checkInterval = 5 # 每次检查的间隔秒数

# 无限循环实现持续监控
while ($true) {
    # 读取整个日志文件(-Raw参数提升大文件读取效率)
    $fileContent = Get-Content -Path $logPath -Raw
    
    # 统计目标字符串的总出现次数
    $matches = Select-String -InputObject $fileContent -Pattern $targetString -AllMatches
    $currentCount = $matches.Matches.Count

    # 覆盖写入结果到目标文件
    # 文本文件模式:直接写入数字
    $currentCount | Out-File -Path $outputPath -Force
    # 如果需要CSV格式(带时间戳),注释上面的行,启用下面的代码
    # [PSCustomObject]@{
    #     统计时间 = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    #     出现次数 = $currentCount
    # } | Export-Csv -Path $outputPath -NoTypeInformation -Force

    # 等待指定间隔后再次检查
    Start-Sleep -Seconds $checkInterval
}

关键功能说明

  • 持续监控:通过while ($true)创建无限循环,脚本会一直运行直到你手动按下Ctrl+C停止。
  • 高效读取:添加-Raw参数一次性读取整个文件,比逐行读取更适合大日志文件的场景。
  • 覆盖写入:-Force参数确保每次写入都会完全覆盖目标文件的旧内容,保证文件里永远是最新的计数。
  • 灵活配置:开头的参数可以自由调整——比如修改检查间隔、输出文件路径,或者切换文本/CSV输出格式。

CSV格式的额外说明

如果选择CSV输出,每次统计的结果会包含精确到秒的时间戳和当前总次数,虽然是覆盖写入,但能直观看到最新统计的时间点,适合需要追溯的场景。

停止脚本的方法

当你需要终止监控时,直接在PowerShell窗口按下Ctrl+C即可,脚本会立刻停止运行。

内容的提问来源于stack exchange,提问作者Stephen Cousins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:47:50