我想根据最新的时间戳来检索文件的内容。我在下面的代码段中尝试过,但结果与预期不符。
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
该如何解决?
答案 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