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

如何用PowerShell递归查找指定子文件夹并列出指定类型文件?

PowerShell递归查找指定子文件夹及文件的解决方案

需求说明

  • 递归遍历所有文件夹,查找名为crypted的子文件夹(可存在于任意层级)
  • 列出这些crypted文件夹下的指定扩展名文件(示例为.txt),需包含完整文件路径

现有实现的局限

原脚本仅能读取list.txt中的文件夹列表,检查指定根目录下对应子路径里的crypted文件夹,无法实现无指定源目录的全局递归查找。原脚本如下:

$location = "C:\TEST\IMPORTANT"
$list = "C:\TEST\list.txt"

foreach($line in Get-Content $list) {
if ($line -match $regex) {
    
    $FolderExist = Test-Path "$location\$line\crypted"
if ($FolderExist -eq $True) {
    Write-Host "$line"
    Get-ChildItem "$location\$line\crypted" -Recurse -Include *.txt
    }
    else {
    Write-Host "$line does not have crypted folder"
}
}
}

解决方案脚本

直接递归查找所有名为crypted的文件夹,再遍历这些文件夹下的指定扩展名文件:

# 可选:指定要搜索的根目录,若要搜索整个系统可设置为$env:SystemDrive(系统盘)或多个路径数组
$rootPaths = "C:\"  # 可替换为需要搜索的根路径,比如@("C:\", "D:\")

# 指定要筛选的文件扩展名,可多个,比如@("*.txt", "*.doc")
$targetExtensions = "*.txt"

# 递归查找所有名为crypted的文件夹
$cryptedFolders = Get-ChildItem -Path $rootPaths -Directory -Recurse -Filter "crypted" -ErrorAction SilentlyContinue

# 遍历每个crypted文件夹,列出目标文件
foreach ($folder in $cryptedFolders) {
    Write-Host "找到crypted文件夹:$($folder.FullName)"
    Get-ChildItem -Path $folder.FullName -File -Filter $targetExtensions -ErrorAction SilentlyContinue | Select-Object FullName
}

关键说明

  • -Directory参数限定只查找文件夹,提升搜索效率
  • -Filter "crypted"直接定位目标文件夹名称,比-Include性能更好
  • -ErrorAction SilentlyContinue忽略权限不足等访问错误,避免脚本中断
  • 通过Select-Object FullName确保输出完整文件路径,也可直接输出对象查看更多属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:32:14