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

关于PowerShell中(Get-ChildItem).Length的行为疑问:单文件目录下返回文件大小,是否有简便替代方案?

解决PowerShell中获取目录项数量的小技巧

嘿,这个问题我当初刚用PowerShell的时候也踩过坑!确实,当目录里只有一个文件时,(Get-ChildItem).Length返回的是文件本身的大小,而不是我们想要的项数——这是因为PowerShell的统一对象模型在搞事情:

  • 当Get-ChildItem返回多个结果时,它会自动包装成数组,此时.Length就是数组的元素个数(也就是项数);
  • 但如果只有一个结果,它直接返回单个FileInfo或DirectoryInfo对象,这时.Length调用的是文件的大小属性。

不用自己写函数,有几个简便的解决方法:

方法1:强制转为数组(最通用)

用@()把Get-ChildItem的结果强制包装成数组,不管结果是单个还是多个对象,.Length都会返回数组的元素数量:

@(Get-ChildItem).Length

方法2:使用Count属性(PSv3+推荐)

从PowerShell 3.0开始,引入了统一属性访问机制,即使是单个对象,也能直接访问Count属性返回1,多个对象时返回元素个数:

(Get-ChildItem).Count

如果你的PowerShell版本是v2或更早,这个方法不适用,还是用方法1或者方法3。

方法3:用Measure-Object统计

通过管道把结果传给Measure-Object,然后取它的Count属性,这个方法兼容性最好,所有PowerShell版本都能用:

(Get-ChildItem | Measure-Object).Count

这几种方法都能完美解决你的问题,不用额外写函数~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:22:38