我需要批量为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的文件。