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

如何在PowerShell 2.0中用Get-ChildItem递归列文件并排除文件夹

PowerShell 2.0 递归列出带路径的文件(不含文件夹)

方案1:高效过滤文件并提取相对路径

通过管道组合原生命令,先筛选文件对象,再从绝对路径中截取相对路径,避免多次文件系统遍历:

Get-ChildItem -Recurse | Where-Object { !$_.PSIsContainer } | ForEach-Object {
    $_.FullName.Substring($pwd.Path.Length + 1)
}
  • !$_.PSIsContainer:直接排除文件夹(容器类型对象)
  • 截取逻辑:去掉当前工作目录的绝对路径前缀,生成符合要求的相对路径格式(如dir-name1\file-name1.ext)

方案2:修复原命令的扩展名局限

如果偏好使用-Name参数直接返回相对路径格式,可通过二次校验排除文件夹:

Get-ChildItem -Recurse -Name | Where-Object { ! (Get-Item $_).PSIsContainer }

注:此方案会对每个返回条目调用Get-Item,性能略低于方案1,但写法更紧凑。

关键说明

  • 原命令Get-ChildItem -Recurse -Name -Include *.*的核心局限是会排除无扩展名的文件,上述方案均解决了该问题
  • 两种方案均无需编写复杂脚本,仅通过PowerShell 2.0原生命令组合实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:19:54