使用Powershell删除csv文件中日期超过一天的行

时间:2019-04-30 11:50:05

标签: powershell

菜鸟问题。 我有以下格式的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

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

1 个答案:

答案 0 :(得分:1)

为了有效地使用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)