You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求编写PowerShell脚本:统计指定时间段内文件夹及子文件夹的文件数

PowerShell脚本:统计指定时间段内创建的文件数量

原脚本问题分析

你的脚本无法运行的核心原因是管道逻辑顺序错误:你先通过Measure-Object统计了所有文件的总数,此时管道中传递的是一个数字(Count值),而Where-Object需要的是文件对象的CreationTime属性,自然无法完成过滤。此外,脚本还缺少目标文件夹指定、自定义起止日期的交互逻辑。

可运行的解决方案脚本

以下是满足需求的完整脚本,支持输入目标文件夹、起止日期,并统计对应时间段内创建的文件数量:

# 获取要统计的文件夹路径,支持默认当前目录
$targetPath = Read-Host "请输入要统计的文件夹路径(直接回车则使用当前目录)"
if (-not $targetPath) { $targetPath = $PWD.Path }

# 循环获取并验证起始日期
do {
    $startDateInput = Read-Host "请输入起始日期(格式:yyyy-MM-dd)"
    $startDate = try { [DateTime]::ParseExact($startDateInput, "yyyy-MM-dd", $null) } catch { $null }
    if (-not $startDate) { Write-Host "日期格式不正确,请重新输入" }
} while (-not $startDate)

# 循环获取并验证结束日期,将结束日期设为当天最后一毫秒,确保包含当天所有文件
do {
    $endDateInput = Read-Host "请输入结束日期(格式:yyyy-MM-dd)"
    $endDate = try { [DateTime]::ParseExact($endDateInput, "yyyy-MM-dd", $null).AddDays(1).AddMilliseconds(-1) } catch { $null }
    if (-not $endDate) { Write-Host "日期格式不正确,请重新输入" }
} while (-not $endDate)

# 统计符合条件的文件数量:先过滤再计数,逻辑正确
$fileCount = (Get-ChildItem -Path $targetPath -Recurse -File | Where-Object { $_.CreationTime -ge $startDate -and $_.CreationTime -le $endDate }).Count

# 输出结果
Write-Host "`n在 [$targetPath] 及其子文件夹中,[$startDateInput] 至 [$endDateInput] 期间创建的文件总数为:$fileCount"

脚本关键点说明

  • 文件夹路径灵活性:支持手动输入路径,也可直接回车使用当前工作目录。
  • 日期输入验证:通过循环确保用户输入的日期格式符合要求,避免脚本因无效输入崩溃。
  • 结束日期处理:将结束日期调整为当天的最后一毫秒(如2024-05-20 23:59:59.999),确保当天创建的所有文件都被纳入统计。
  • 精准过滤:使用-File参数仅统计文件(若需包含文件夹,可移除该参数),先通过Where-Object过滤符合时间范围的文件,再统计数量,逻辑正确。

内容的提问来源于stack exchange,提问作者pbitps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:05:23