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

如何使用AlphaFS的DirectoryEnumerationFilters筛选多扩展名文件?

嘿,这个问题我之前处理过,刚好能给你说清楚怎么用AlphaFS的DirectoryEnumerationFilters来筛选多扩展名文件,顺便解决长路径的问题~

首先,你需要先确保已经加载了AlphaFS的程序集,比如:

Add-Type -Path "C:\Path\To\Your\AlphaFS.dll"

接下来,核心就是构造DirectoryEnumerationFilters对象,通过它的FileFilter属性来定义我们的多扩展名筛选规则。这个属性接受一个谓词委托(Predicate),我们可以在PowerShell里用脚本块来实现这个逻辑:

# 创建筛选器实例
$filters = New-Object Alphaleonis.Win32.Filesystem.DirectoryEnumerationFilters

# 定义文件筛选规则:匹配 .log 和 .htm 扩展名(不区分大小写)
$filters.FileFilter = {
    param([string]$fileName)
    $fileExtension = [System.IO.Path]::GetExtension($fileName).ToLowerInvariant()
    return $fileExtension -eq ".log" -or $fileExtension -eq ".htm"
}

然后设置枚举选项,指定要遍历所有子目录:

$enumerationOptions = [Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions]::AllDirectories

最后调用目标重载方法就行:

$matchingEntries = [Alphaleonis.Win32.Filesystem.Directory]::EnumerateFileSystemEntries(
    "D:\Games",
    $enumerationOptions,
    $filters
)

# 可以遍历输出结果看看
foreach ($entry in $matchingEntries) {
    Write-Host $entry
}

补充说明:

  • 用ToLowerInvariant()是为了让筛选不区分大小写,比如.LOG或.HTM也能被匹配到;
  • 如果还需要对文件夹做筛选,可以设置$filters.DirectoryFilter属性,逻辑和FileFilter类似;
  • AlphaFS的这个方法天生支持长路径(突破Windows传统的260字符限制),正好解决你之前Get-ChildItem处理不了的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:46