1

什么是 powershell 命令,用于在文件夹中查找不Get-Childitem符合LastWriteTime.

LastWriteTime因此,请检查目录中是否包含不包含2012 年 1 月 10 日(10 月 1 日)至 2012 年 10 月 25 日(10 月 25 日)之间的任何文件的文件。

我想显示没有该范围内的任何文件的文件夹......这样我就知道它们是旧的并且可以删除整个目录。

这方面的例子是:

Folder1 - 10 月内编写的一些文件 - 忽略整个文件夹并且不在结果中显示这些文件

Folder2 - LastWriteTime10 月份没有写入文件,因此应显示此文件夹和文件。

我知道这可以做到,Get-ChildItem我被困在下面的位子上。

Get-ChildItem E:\LogArchive -Recurse | Where-Object{$_.LastWriteTime.......?
4

2 回答 2

3

简单的解决方案是这样的:

Where-Object{ $_.LastWriteTime -lt $startDate -or $_.LastWriteTime -gt $endDate }

在哪里和$startDate是。01/10/2012 (1st Oct)$endDate25/10/2012 (25th Oct)

这种方法的问题是它没有考虑[datetime]. 因此,在您的示例中,如果您有25-Oct-2012上限,它将返回25-Oct-2012 9:00您可能不想要的在 处创建的文件。

下面的代码根据[datetime]输入计算截断时间部分的 's [datetime],并构建 的月至今日期范围($dayStart, $dayEnd)

$entry_date = "20-Oct-2012 9:00" #to feed current date, use this: Get-Date
$dayEnd = Get-Date $entry_date -Minute 0 -Hour 0 -Second -0;
$dayStart = Get-Date $endDate -Day 1;
$dayStart, $dayEnd

对于此示例代码,以下是输出:

Monday, October 01, 2012 12:00:00 AM 
Saturday, October 20, 2012 12:00:00 AM

请注意,这种方法很灵活,因为您可以设置$entry_dateDateor String,并且它可能有也可能没有时间部分 - 它适用于所有这些情况。然后,您可以在以下代码中使用此代码Where-Object

Where-Object{ $_.LastWriteTime -lt $dayStart -or $_.LastWriteTime -ge $dayEnd.AddDays(1) }

请注意-ge $dayEnd.AddDays(1)与.25-Oct-201225-Oct-2012 9:00

于 2012-10-25T14:03:06.147 回答
2

试试这个:

[datetime]$startDate = "10/01/2012" # or $startDate = get-date -Date  1/10/2012
[datetime]$endDate = "10/25/2012"   # or $endDate   = get-date -Date 25/10/2012

 ? { $_.LastWriteTime -lt $startDate -or $_.LastWriteTime -gt $endDate }
于 2012-10-25T14:15:45.770 回答