如何用PowerShell批量识别CR LF格式Windows文件和LF格式Unix文件
PowerShell批量检测文件换行格式(CRLF/LF)方案
你之前的批量命令无法返回预期结果的核心原因是:直接给Get-Content传入多文件匹配路径并加-Raw参数时,PowerShell会把所有匹配文件的内容拼接为单个长字符串执行匹配,无法对应到单个文件的检测结果,也不会输出文件路径、文件名等维度的信息。
完整实现代码
# 配置目标检测目录 $targetDir = "C:\Desktop\SecretSauce" # 配置需要检测的文件后缀,可自行增减 $checkExts = @(".txt", ".cpp", ".hpp", ".sql") # 遍历文件执行检测 Get-ChildItem -Path $targetDir -File -Recurse | Where-Object { $checkExts -contains $_.Extension.ToLower() } | ForEach-Object { $fileContent = Get-Content -Path $_.FullName -Raw $isCRLF = $fileContent -match "\r\n" # 输出指定字段的结果 [PSCustomObject]@{ 文件路径 = $_.DirectoryName 完整文件名 = $_.Name 是否为CRLF格式 = $isCRLF } }
可选优化项
- 不需要检测子目录:删除
Get-ChildItem后的-Recurse参数即可 - 大文件检测提速:不需要读取全量文件内容,只要读前几行判断即可,将
Get-Content -Path $_.FullName -Raw替换为Get-Content -Path $_.FullName -TotalCount 5 -Raw,可大幅降低大文件检测耗时 - 结果导出为表格:如果需要把结果保存为本地文件,在代码最后追加
| Export-Csv -Path "C:\换行格式检测结果.csv" -Encoding UTF8 -NoTypeInformation,即可导出为CSV文件用Excel打开查看
内容的提问来源于stack exchange,提问作者Learning_something_new
相关产品推荐
相关产品推荐

