使用Powershell按月筛选CSV文件

使用Powershell按月筛选CSV文件,powershell,Powershell,我想从一个巨大的CSV文件中删除所有行,除了3月份登录的行。我有一个适用于其他项目的PS脚本,但似乎不适用于此: $SourceFile = 'C:\Temp\Users_with_IP_20180409.CSV' $startDate = "3/1/2018" $endDate = "3/31/2018" (Get-Content $SourceFile) | where { $_.LocalTime -ge $startDate -and $_.LocalTime -lt $endDate

我想从一个巨大的CSV文件中删除所有行,除了3月份登录的行。我有一个适用于其他项目的PS脚本,但似乎不适用于此:

$SourceFile = 'C:\Temp\Users_with_IP_20180409.CSV'
$startDate = "3/1/2018"
$endDate = "3/31/2018"

(Get-Content $SourceFile) | where { $_.LocalTime -ge $startDate -and $_.LocalTime -lt $endDate } | Set-Content $SourceFile

将开始/结束日期强制转换为[日期时间]的脚本:

$SourceFile = 'C:\Temp\Users_with_IP_20180409.CSV'
$TargetFile = 'C:\Temp\Users_with_IP_20180409_sans_March.CSV'
$startDate = [datetime]"3/1/2018"
$endDate   = ([datetime]"3/31/2018").AddDays(1).AddSeconds(-1)

(Import-Csv $SourceFile) | 
    Where-Object { (Get-Date $_.LocalTime) -lt $startDate -or
                   (Get-Date $_.LocalTime) -gt $endDate } | 
        Export-Csv $TargetFile -NoType

Import CSV$SourceFile |?{(Get Date$\ LocalTime).Month-ne 3}| Export CSV$newSourceFile-NoType
您似乎正在Excel中查看CSV的内容。我认为这是一种不好的做法,因为Excel会试图解释数据,然后改变数据的显示方式,尤其是在处理日期时。使用记事本++或其他文本编辑器查看真实的底层数据。您的CSV文件只包含文本;别忘了;)还考虑使用<代码>导入CSV <代码> CMDeleBeGrand的解决方案,虽然我需要将操作符从EBN改为-EQ。EBEGRE的欢呼。是的,我错过了“消除”这个词。对不起,这将包括2018年3月31日凌晨12:00之后发生的任何事情。@EBGreen改变了,我怀疑这是否值得投反对票,不管是谁。噢,是我。错误的答案就是错误的答案。例如,使用该代码收集账单信息的人每个月都会错过一天。既然已经确定,我已经取消了投票权。