根据文件的最新修改日期检索文件的内容

时间:2019-12-13 09:28:33

标签: powershell

我想根据最新的时间戳来检索文件的内容。我在下面的代码段中尝试过,但结果与预期不符。

    if(Get-Content $data)
    {

            $result = @()
             $r = Get-ChildItem $data| Where-Object {$_.LastWriteTime }
                for($i = ($data.Count -1); $i -ge 0; $i--) 
                {
                    $result += $data[$i]
                    if ($data[$i] -like $r) 
                    { 
                        break
                    }
                }
            [array]::Reverse($result)
            $result 

    } 

a.txt文件的内容具有以下格式

Fri 09/27/2019 15:31:03.38 Windows driver installed
Fri 09/27/2019 15:31:03.47 Paint updated
Fri 09/27/2019 15:31:19.07 Folders are updated 
Fri 09/27/2019 15:31:19.13 Necessary files are not found 
Thu 12/05/2019 15:14:57.75 Folders are updated 
Thu 12/05/2019 15:14:58.35 Necessary files are not found 
Thu 12/05/2019 15:14:58.42 Need to install game services
Thu 12/05/2019 15:14:58.46 Error in services
Thu 12/05/2019 15:15:02.61 Aborting 

该如何解决?

1 个答案:

答案 0 :(得分:0)

一个非常令人困惑和框架错误的问题,但是,如果我正确理解这一点,则您正在尝试获取文件的lastwritetime,并查找与该时间对应的文件中的条目。是吗?

我看到的问题是$r中的值不正确。 for表将无法正常工作,因为u不在使用文件内容,而是在使用文件名。假设$data是文件名,则应为:

$filecontent = Get-Content $data

$result = @()
$r = ((Get-ChildItem $data).LastWriteTime).ToString("ddd MM/dd/yyyy hh:mm:ss.ff")

Foreach ($line in $filecontent)
{
    if ($line -match $r)
    {
        $result += $line
    }
}
$result