Powershell:在创建的特定时间范围内递归搜索驱动器或目录以查找文件类型
Powershell: Recursively search a drive or directory for a file type in a specific time frame of creation
我正在尝试将 Powershell 整合到我的日常工作流程中,这样我就可以从桌面支持人员晋升为系统管理员。我在帮助同事时遇到的一个问题是如何搜索保存在未知目录中的丢失或遗忘的文件。我想出的管道是:
dir C:\ -Recurse -Filter *.pdf -ErrorAction SilentlyContinue -Force | Out-File pdfs.txt
此代码完全按照我的要求执行,但现在我想扩展此命令并使其更高效。特别是因为我公司的客户文件管理非常混乱。
我想用这条管道做什么:
- 递归搜索在指定时间范围内创建的特定文件类型。假设此搜索中允许的最旧文件是两天前的文件。
- 将文件保存到文本文件中,其中列包含文件名、全名(路径),并按创建时间降序排列。
我目前拥有的:
dir C:\ -Recurse -Filter *.pdf -ErrorAction SilentlyContinue -Force | Select-Object Name, FullName | Out-File *pdfs.txt
我真的需要有关如何在创建文件时创建过滤器的帮助。我想我需要在 dir 管道之后和 Select Object 管道之前立即使用 Where-Object cmdlet,但我不知道如何设置它。这是我写的:Where-Object {$_.CreationTime <
你走在正确的轨道上,要获取特定文件创建日期范围内的文件,你可以将 dir 命令结果通过管道传输到:
Where-Object {$_.CreationTime -ge "06/20/2017" -and $_.CreationTime -le "06/22/2017"}
如果您想要更可重复的内容,而不必每次都对日期进行硬编码,而只想搜索最多 2 天前的文件,您可以设置变量:
$today = (Get-Date)
$daysago = (Get-Date).AddDays(-2)
然后插入变量:
Where-Object {$_.CreationTime -ge $daysago -and $_.CreationTime -le $today}
我不在我的 Windows PC 附近进行测试,但我认为它应该可以工作!
看看这是否有帮助
dir c:\ -Recurse -Filter *.ps1 -ErrorAction SilentlyContinue -Force | select LastWriteTime,Name | Where-Object {$_.LastWriteTime -ge [DateTime]::Now.AddDays(-2) } | Out-File Temp.txt
我正在尝试将 Powershell 整合到我的日常工作流程中,这样我就可以从桌面支持人员晋升为系统管理员。我在帮助同事时遇到的一个问题是如何搜索保存在未知目录中的丢失或遗忘的文件。我想出的管道是:
dir C:\ -Recurse -Filter *.pdf -ErrorAction SilentlyContinue -Force | Out-File pdfs.txt
此代码完全按照我的要求执行,但现在我想扩展此命令并使其更高效。特别是因为我公司的客户文件管理非常混乱。
我想用这条管道做什么:
- 递归搜索在指定时间范围内创建的特定文件类型。假设此搜索中允许的最旧文件是两天前的文件。
- 将文件保存到文本文件中,其中列包含文件名、全名(路径),并按创建时间降序排列。
我目前拥有的:
dir C:\ -Recurse -Filter *.pdf -ErrorAction SilentlyContinue -Force | Select-Object Name, FullName | Out-File *pdfs.txt
我真的需要有关如何在创建文件时创建过滤器的帮助。我想我需要在 dir 管道之后和 Select Object 管道之前立即使用 Where-Object cmdlet,但我不知道如何设置它。这是我写的:Where-Object {$_.CreationTime <
你走在正确的轨道上,要获取特定文件创建日期范围内的文件,你可以将 dir 命令结果通过管道传输到:
Where-Object {$_.CreationTime -ge "06/20/2017" -and $_.CreationTime -le "06/22/2017"}
如果您想要更可重复的内容,而不必每次都对日期进行硬编码,而只想搜索最多 2 天前的文件,您可以设置变量:
$today = (Get-Date)
$daysago = (Get-Date).AddDays(-2)
然后插入变量:
Where-Object {$_.CreationTime -ge $daysago -and $_.CreationTime -le $today}
我不在我的 Windows PC 附近进行测试,但我认为它应该可以工作!
看看这是否有帮助
dir c:\ -Recurse -Filter *.ps1 -ErrorAction SilentlyContinue -Force | select LastWriteTime,Name | Where-Object {$_.LastWriteTime -ge [DateTime]::Now.AddDays(-2) } | Out-File Temp.txt