PowerShell如何检测文件可读性并返回布尔值及对应扩展名
PowerShell 文件可读取性检测实现方案
现有命令失效原因
- 第一条命令的
-match "\r\n$"逻辑是判断文本末尾是否存在Windows格式换行符,和「文件能否正常打开」完全无关,文本文件如果末尾未留空行自然返回False - 第二条命令用通配符批量读取所有文件内容后做匹配,返回的数字是匹配成功的内容在数组中的索引值,和需求完全不匹配
分步实现方案
第一步:定义目标文件夹路径
$targetFolder = "C:\desktop\parent_folder"
第二步:遍历文件检测可读性
核心逻辑用try-catch捕获文件读取异常,无异常即判定为可正常读取:
Get-ChildItem -Path $targetFolder -File | ForEach-Object { $isReadable = $false try { # 只读模式打开文件流即可验证可读性,无需加载全量内容,效率更高 $fileStream = $_.OpenRead() $fileStream.Close() $isReadable = $true } catch { $isReadable = $false } # 输出结构化结果 [PSCustomObject]@{ 文件名 = $_.Name 可读取 = $isReadable 扩展名 = $_.Extension } }
可选操作:导出结果到CSV
如果需要保存检测结果,在上述代码末尾追加导出命令即可:
| Export-Csv -Path "C:\desktop\文件读取检测结果.csv" -Encoding UTF8 -NoTypeInformation
实现说明
- 支持覆盖所有读取异常场景:文件被独占占用、权限不足、文件系统损坏等情况都会自动标记为False
- 大文件场景下性能远高于
Get-Content方案,不会占用过多内存 - 输出结果默认直接展示在PowerShell控制台,可按需调整输出格式
内容的提问来源于stack exchange,提问作者Learning_something_new
相关产品推荐
相关产品推荐

