windows批量为文本每行添加回车并保存为utf8编码

⌚Time: 2026-01-05 01:41:00

👨‍💻Author: Jack Ge

我需要批量为markdown文件的每行添加回车,因为自己在原来平台写的很多文章是不规范的markdown段落。markdown每行要空行。而我的是接着写的。导致markdown显示时候每行全部连接在一起了。

我看网上一些markdown格式化网站。他们没有能把我的每行加一个空行。所以只能用powershell脚本转换。

问了AI给了个有用代码

Get-ChildItem *.md | ForEach-Object {
    $content = Get-Content $_.FullName
    $newContent = $content | ForEach-Object { $_ + "`n" }
    Set-Content $_.FullName $newContent -Encoding UTF8
}

必须加-Encoding UTF8参数保证utf8编码文件,否则输出文件会变成默认的ANSI编码。

但是我发现生成的文件具有BOM,对于网页文件BOM应该是不必要的。要去掉。-Encoding UTF8NoBOM在低版本的powershell里面不被支持。所以又写了一段批量去掉文件BOM的脚本,能够正常使用:

# 去除当前目录所有md文件的BOM
Get-ChildItem *.md | ForEach-Object {
    # 读取文件(自动处理BOM)
    $content = [System.IO.File]::ReadAllText($_.FullName, [System.Text.Encoding]::UTF8)
    
    # 直接写回(无BOM)
    [System.IO.File]::WriteAllText($_.FullName, $content, [System.Text.UTF8Encoding]::new($false))
    
    Write-Host "已处理: $($_.Name)"
}

所以结果就是把几百个markdown文件每行加了回车。然后输出UTF8无BOM的文件。