Powershell 仅从当前日期获取文件
对于大多数Powershell程序员来说,这可能非常容易,但我对Powershell完全是新手,并且对一个简单的Where对象查询感到沮丧 我正在从文件夹中收集csv:Powershell 仅从当前日期获取文件,powershell,where-clause,Powershell,Where Clause,对于大多数Powershell程序员来说,这可能非常容易,但我对Powershell完全是新手,并且对一个简单的Where对象查询感到沮丧 我正在从文件夹中收集csv: $files = Get-ChildItem $home\desktop\test\*.csv -Recurse 所以输出是这样的: Mode LastWriteTime Length Name
$files = Get-ChildItem $home\desktop\test\*.csv -Recurse
所以输出是这样的:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01.09.2020 11:38 16 a.csv
-a---- 01.09.2020 11:38 10 b.csv
-a---- 31.08.2020 13:39 10 c.csv
-a---- 01.09.2020 11:38 14 d.csv
-a---- 31.08.2020 13:39 14 e.csv
-a---- 31.08.2020 13:38 16 f.csv
-a---- 31.08.2020 13:40 17 g.csv
$date = (Get-Date -Hour 0 -Minute 0 -Second 0 -Millisecond 0)
$files = Get-ChildItem $home\desktop\test\*.csv -Recurse
$files2 = $files | Where-Object {$_.LastWriteTime -gt $date}
$files2
等等。。到现在为止,一直都还不错。但现在我只需要与当前日期匹配的.csv文件。因此,就我的理解而言,我必须:
$date = $(get-date)
$files2 = $files | Where-Object {($_.LastWriteTime -eq $date)}
但是变量files2中的结果为空。我不知道为什么:(即使Powershell在写入主机时会像字符串一样表示
LastWriteTime
,LastWriteTime
实际上是DateTime
类型
$files = Get-ChildItem $home\desktop\test\*.csv -Recurse
$files.LastWriteTime[0].GetType()
这意味着,反过来,where子句表示“获取LastWriteTime等于当前时间的所有文件”,其中当前时间是运行Get Date的确切时刻。显然,除非您恰好在同一时刻编写文件,或者玩弄系统时间,或者其他一些边缘情况,否则这永远不会是什么
要解决此问题,请获取DateTime对象并将时间设置为一天的开始,如下所示:
$date = (Get-Date -Hour 0 -Minute 0 -Second 0 -Millisecond 0)
然后,搜索LastWriteTime
大于此值的文件
$files2 = $files | Where-Object {($_.LastWriteTime -gt $date)}
完整脚本应如下所示:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01.09.2020 11:38 16 a.csv
-a---- 01.09.2020 11:38 10 b.csv
-a---- 31.08.2020 13:39 10 c.csv
-a---- 01.09.2020 11:38 14 d.csv
-a---- 31.08.2020 13:39 14 e.csv
-a---- 31.08.2020 13:38 16 f.csv
-a---- 31.08.2020 13:40 17 g.csv
$date = (Get-Date -Hour 0 -Minute 0 -Second 0 -Millisecond 0)
$files = Get-ChildItem $home\desktop\test\*.csv -Recurse
$files2 = $files | Where-Object {$_.LastWriteTime -gt $date}
$files2
非常感谢。所以我已经很接近了,但到目前为止…谢谢你的解释。现在我知道如何更好地处理获取日期:)