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

PowerShell无法获取指定目录下最新创建的10个文件夹问题

解决获取目录下最新创建的10个文件夹问题

问题分析

你之前的操作存在两个核心问题:

  1. 添加的-and $_.CreationTime -gt (Get-Date).AddDays(-1)筛选条件,可能是目标目录下最近1天没有新建文件夹,导致无匹配结果返回。
  2. 你用LastWriteTime作为排序依据,但需求是获取最新创建的文件夹,应该以CreationTime为排序维度。

修正后的代码

直接按文件夹创建时间倒序排序,取前10个,同时简化代码逻辑:

$startDirectory = '\\dd_exchange\content\maps'
# 直接用-Directory筛选文件夹,按CreationTime倒序取前10
$directoryItems = Get-ChildItem $startDirectory -Directory | Sort-Object -Descending -Property CreationTime -Top 10

foreach ($folder in $directoryItems) {
    # 计算文件夹总大小,处理空文件夹的情况
    $totalSize = Get-ChildItem $folder.FullName -Recurse -Force -File | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum
    $sizeInGB = if ($totalSize) { "{0:N2}" -f ($totalSize / 1GB) } else { "0.00" }
    "$($folder.FullName) -- $sizeInGB GB"
}

关键优化说明

  • 用Get-ChildItem -Directory替代Where-Object {$_.PSIsContainer -eq $true},更简洁高效。
  • 排序属性改为CreationTime,精准匹配“最新创建”的需求。
  • 增加空文件夹处理逻辑,避免因$totalSize为$null导致的格式化错误。
  • 用Select-Object -ExpandProperty Sum直接获取数值,简化后续大小计算步骤。

关于之前-Top 10无效的原因

如果之前用LastWriteTime排序未得到预期结果,大概率是目标文件夹的最后修改时间并非最新,但创建时间才是你需要的判断维度。另外,若目标目录下文件夹数量不足10个,代码会返回所有存在的文件夹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:57:41