首页 > 解决方案 > 过去 7 天阅读文本

问题描述

我正在尝试阅读几个文本文件,其中包含日期和成功的文本。想法是读取最近 7 天的日志,这些日志连续成功。

日志示例:

12/5/2018 3:40:08 AM:Something_secret.txt 成功 6335
12/6/2018 3:40:06 AM:Something_secret.txt 成功 6337
12/7/2018 3:40:10 AM:Something_secret.txt 成功 6338
2018 年 12 月 8 日凌晨 3:40:09:Something_secret.txt 成功 6342
12/9/2018 3:40:09 AM:Something_secret.txt 成功 6342
2018 年 12 月 10 日凌晨 3:40:11:Something_secret.txt 成功 6342
2018 年 12 月 11 日凌晨 3:40:07:Something_secret.txt 成功 6342
12/12/2018 3:40:10 AM:Something_secret.txt 成功 6344
12/13/2018 3:40:10 AM:Something_secret.txt 成功 6347

日志类型 2:

12/6/2018 3:40:06 AM:Something_secret.txt 成功 6337
12/7/2018 3:40:10 AM:Something_secret.txt 成功 6338
2018 年 12 月 8 日凌晨 3:40:09:Something_secret.txt 成功 6342
12/9/2018 3:40:09 AM:Something_secret.txt 成功 6342
2018 年 12 月 10 日凌晨 3:40:11:Something_secret.txt 文件未找到
2018 年 12 月 11 日凌晨 3:40:07:Something_secret.txt 成功 6342
12/12/2018 3:40:10 AM:Something_secret.txt 成功 6344
2018 年 12 月 13 日凌晨 3:40:10:Something_secret.txt 文件未找到

我创造了这个

$files = gci C:\Users\Desktop\xx
foreach ($file in $files) {
    $date = (Get-Date).AddDays(-7)-f 'MM/d/yyyy'
    $today = ((Get-Date -Format MM/d/yyyy))
    gc $file.FullName | where {
        $_ -match $date -and
        $_ -match $today -match 'Successfully'
    } | select @{n='Pathoffile';e={$file.FullName}}
}

标签: powershell

解决方案


我可以做的最简单的:

$last7day = [datetime]::Now.AddDays(-7)
#get content from file just provide path ( you can do it in loop)
$files = Get-Content -Path ...
#a line example
$files = '12/12/2018 3:40:08 AM: Something_secret.txt Successfully 6335'

foreach ($line in $files){

    [datetime]$date = $line  -replace "[^:]:.*",''

    if ($date -gt $last7day ) {$line}
}

推荐阅读