gpt4 book ai didi

powershell - 获取未在特定日期范围内写入的文件/文件夹

转载 作者:行者123 更新时间:2023-12-03 00:39:59 29 4
gpt4 key购买 nike

用于在文件夹中查找不符合Get-ChilditemLastWriteTime过滤器日期范围标准的文件的powershell命令是什么?

因此,请检查目录中是否包含不包含在01/10/2012(十月1日)到25/10/2012(十月25)之间具有LastWriteTime的文件的文件。

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

例如:

Folder1-十月内写入的某些文件-忽略整个文件夹,并且不在结果中显示

Folder2-在10月中没有文件写有LastWriteTime,因此应该显示此文件夹和文件。

我知道可以使用Get-ChildItem完成此操作,但我被困在下面。

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

最佳答案

简单的解决方法是:

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

其中 $startDate01/10/2012 (1st Oct)$endDate25/10/2012 (25th Oct)

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

下面的代码根据输入的 [datetime]计算时间部分被截断的 [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_date设置为 DateString,并且它可能有时间部分也可能没有时间部分-在所有这些情况下都可以使用。然后,您可以在 Where-Object中包含以下代码:
Where-Object{ $_.LastWriteTime -lt $dayStart -or $_.LastWriteTime -ge $dayEnd.AddDays(1) }

请注意,比较 -ge $dayEnd.AddDays(1)25-Oct-201225-Oct-2012 9:00如何解决该问题。

关于powershell - 获取未在特定日期范围内写入的文件/文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070214/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com