удалить строки, имеющие более чем дневную дату в CSV-файле, используя Powershell - PullRequest
1 голос
/ 30 апреля 2019

нубский вопрос. У меня есть 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 Ответ

1 голос
/ 30 апреля 2019

Чтобы эффективно использовать 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), если вы действительно хотите данные в течение последнего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...