我需要一个脚本,该脚本将使用'Date Started'列中的日期在.csv文件的最后7天内导入数据行(如。 csv,如下面的示例数据所示),然后将数据另存为另一个.csv文件。删除日期早于7天的CSV文件中的行
"Name","Title","Date Started"
Dave,Manager,02/12/2015
Jim,Worker,05/08/2015
Susan,Worker,04/07/2015
我需要一个脚本,该脚本将使用'Date Started'列中的日期在.csv文件的最后7天内导入数据行(如。 csv,如下面的示例数据所示),然后将数据另存为另一个.csv文件。删除日期早于7天的CSV文件中的行
"Name","Title","Date Started"
Dave,Manager,02/12/2015
Jim,Worker,05/08/2015
Susan,Worker,04/07/2015
转换的Date Started
列的值与实际日期导入的源文件后,则所需时间范围内的值进行过滤和导出结果:
$maxage = (Get-Date).AddDays(-7)
Import-Csv 'C:\path\to\input.csv' |
Where-Object { [DateTime]$_.'Date Started' -ge $maxage } |
Export-Csv 'C:\path\to\output.csv' -NoType
如果铸造价值一个DateTime
对象不工作,你需要分析它像这样(调整格式字符串为必填项):
[DateTime]::ParseExact(($_.'Date Started', 'dd\/MM\/yyyy', [Globalization.CultureInfo]::InvariantCulture)
谢谢你。但是它是以美国格式解释日期,而不是英国格式dd/mm/yyyy,我需要。我应该指出这个抱歉。它可以修改为与英国日期一起使用吗? – BigMartin
@BigMartin在这种情况下,您需要使用合适的合成字符串解析日期,如我答案的下半部分所述。 –
使用'进口csv'数据,'磨片拉重新对象'过滤数据,'export-csv -notype'导出数据。谷歌搜索这些条款会给你更多关于他们如何工作的细节。当引用“日期开始”列时,您需要将属性名称放在引号中,因为它包含空格。 – JohnLBevan