如何用PowerShell遍历所有Kind为Video的视频文件(不限扩展名)
按文件类型(Kind:Video)遍历文件的PowerShell实现方法
方法1:遍历当前文件夹的视频文件
直接调用Windows Shell对象识别文件类型,和Windows搜索的kind:video逻辑完全匹配:
# 创建Shell应用对象 $shell = New-Object -ComObject Shell.Application # 获取当前文件夹的Shell命名空间实例 $currentFolder = $shell.Namespace((Get-Location).Path) # 筛选类型包含"video"的文件并输出路径 $currentFolder.Items() | Where-Object { $_.Type -match 'video' } | ForEach-Object { Write-Output $_.Path } # 使用后释放Com对象,避免内存占用 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null
方法2:递归遍历所有子文件夹的视频文件
如果需要遍历当前目录及所有子目录的视频文件,可结合Get-ChildItem递归获取文件,再通过Shell对象判断类型:
$shell = New-Object -ComObject Shell.Application Get-ChildItem -Recurse -File | ForEach-Object { # 获取当前文件的Shell对象 $fileShellObj = $shell.Namespace($_.DirectoryName).ParseName($_.Name) # 判断是否为视频类型 if ($fileShellObj.Type -match 'video') { Write-Output $_.FullName } } [System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null
补充说明
- 这里依赖的
Type属性对应Windows资源管理器中「类型」列的内容,和系统内置的kind:video识别规则一致,能自动匹配所有系统认定的视频文件,无需手动枚举扩展名。 - 递归遍历的速度取决于文件总量,大量文件场景下可能稍慢,但胜在识别准确性高。
内容的提问来源于stack exchange,提问作者Vicky Dev
相关产品推荐
相关产品推荐

