PowerShell:如何让Get-ChildItem同时按文件类型和近7天创建日期筛选
实现Get-ChildItem同时按文件类型和创建日期筛选
完全可以同时按文件类型(.dat)和近7天创建日期筛选,直接在现有脚本里加入日期过滤逻辑就行,给你两种实用的修改方式:
方式一:用Where-Object管道筛选(兼容所有PowerShell版本)
直接在Get-ChildItem之后、Select之前添加日期过滤,利用你已经定义好的$time变量:
$searchDir = "z:\G29" $searchFile = "*.dat" $outputDir = "d:\AuditLog\AuditLog_$(get-date -f yyyy-MM-dd).txt" $time=(Get-Date).AddDays(-7) $files = Get-ChildItem -Path $searchDir -Recurse -Filter $searchFile -EA SilentlyContinue | Where-Object { $_.CreationTime -ge $time } | # 新增:筛选近7天创建的文件 Select CreationTime, Fullname | Format-Table -Wrap -AutoSize | Out-File $outputDir -Append
改动说明:
- 新增的
Where-Object { $_.CreationTime -ge $time }会只保留创建时间晚于等于7天前的文件 - 如果你要严格筛选“7天内(不含7天前当天)”的文件,把
-ge改成-gt即可
方式二:结合-File参数优化(PowerShell 5.1及以上版本适用)
如果你的PowerShell版本是5.1或更高,可以加上-File参数只返回文件(排除文件夹),让筛选更精准:
$searchDir = "z:\G29" $searchFile = "*.dat" $outputDir = "d:\AuditLog\AuditLog_$(get-date -f yyyy-MM-dd).txt" $time=(Get-Date).AddDays(-7) $files = Get-ChildItem -Path $searchDir -Recurse -Filter $searchFile -File -EA SilentlyContinue | Where-Object { $_.CreationTime -ge $time } | Select CreationTime, Fullname | Format-Table -Wrap -AutoSize | Out-File $outputDir -Append
额外提示:
- 如果不需要递归遍历子文件夹,去掉
-Recurse参数即可 -EA SilentlyContinue会忽略找不到路径之类的错误,保留这个参数可以避免脚本意外中断
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

