检索文件的全名,按日期过滤

时间:2014-05-29 16:27:01

标签: powershell

$date = [datetime]("05/19/2014")
gci -Recurse | Select-Object FullName,LastWriteTime | Where-Object { $_.LastWriteTime.ToShortDateString() -ge $date.ToShortDateString() } | Format-Table

我试图在2014年5月19日找到 之后的文件列表。这里发生了两件事情:< / p>

  1. 我收到的文件早在2009年就已被修改
  2. 表格的栏目非常广泛,我说大概有100个左右的字符(我可能会非常错误,因为我正在注意这一点)
  3. 如何获得正确的文件列表,另外,我如何以可读的方式对它们进行排序?

1 个答案:

答案 0 :(得分:2)

问题可能在于您如何进行比较。 DateTime.ToShortDateString方法使用您的流程使用的当前文化的短日期模式。不幸的是,我无法想到一个例子,它会使2009年的日期大于2014年的字符串形式。尝试直接比较日期时间对象。您可以使用Date属性来比较日期:

$date = [datetime]("05/19/2014")
gci -Recurse | Select-Object FullName,LastWriteTime | Where-Object { $_.LastWriteTime.Date -ge $date } | Format-Table -AutoSize

请注意,我不需要在Date变量上使用$date属性,因为在实例化仅包含日期信息的DateTime对象时,时间设置为12:00上午。 Date属性将提供一个值,其中包含原始DateTime对象的日期,但时间设置为12:00 AM。

我添加到-AutoSize的{​​{1}}参数会处理您的第二个问题,因为它会自动将列调整为合理的宽度。