首页 > 解决方案 > 使用Powershell删除csv文件中日期超过一天的行

问题描述

菜鸟问题。我有一个具有以下格式的 csv 文件

2019-04-18 08:29:47,ACE001P,QL.IN.XCENTER.ERECEIPT.FACADE,2

日期和时间戳可以追溯到将近一个月。现在我只想要最后一天的数据,即 1 天前的数据。我正在使用下面的代码,但它没有给我任何输出。

$Data = Import-CSV "E:\Chayan\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_1.csv"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -lt $CutoffDate} | Out-File .\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_2.csv

我知道我在做一些非常愚蠢的事情。只需要一种方法来完成这项工作。

标签: powershell

解决方案


为了Import-Csv有效地使用,您需要数据中的标题。我使用了-Header开关并添加了包含Date. 随意改变这些。如果您的文件已经有标题,则可以完全省略它。

$Data = Import-CSV "E:\Chayan\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_1.csv" -Header "Date","Col2","Col3","Col4"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -gt $CutoffDate} |
   Export-Csv -Path ".\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_2.csv" -NoTypeInformation

我切换-lt到是-gt因为您给出了日期范围的低端。这意味着您需要找到一个大于该日期的日期,即今天大于昨天。

.AddDays(-30)即使帖子说您想要一天前的数据,我还是作为您的约会开始者离开了。如果您真的想要在最后一天内获得数据,则.AddDays(-1)应该将其更改为。.AddHours(-24)


推荐阅读