如何用PowerShell批量将.mbt文件从UTF-8 BOM转为无BOM UTF-8
PowerShell批量将.mbt文件转为UTF-8无BOM格式脚本解决方案
最终可直接使用的脚本
<# .SYNOPSIS 批量将指定目录下所有.mbt文件从UTF-8 BOM转为UTF-8无BOM格式,直接覆盖原文件 #> [CmdletBinding()] param( [Parameter(Mandatory=$true, HelpMessage="请输入存放.mbt文件的目录完整路径")] [string]$TargetDir ) # 定义无BOM的UTF8编码对象 $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False # 遍历目标目录下所有扩展名为.mbt的文件 Get-ChildItem -Path $TargetDir -Filter "*.mbt" -File | ForEach-Object { # 读取文件全部内容,-Raw参数保证按完整字符串读取不拆分行 $fileContent = Get-Content $_.FullName -Raw # 直接将内容以无BOM UTF8编码写回原文件 [IO.File]::WriteAllText($_.FullName, $fileContent, $Utf8NoBomEncoding) Write-Host "已处理文件:$($_.FullName)" } Write-Host "所有.mbt文件处理完成"
使用方法
- 把上面的代码保存为
Remove-MbtBom.ps1文件 - 打开PowerShell,执行命令:
.\Remove-MbtBom.ps1 -TargetDir "你的.mbt文件所在目录完整路径",示例:.\Remove-MbtBom.ps1 -TargetDir "C:\Users\slavkovs\Desktop\test" - 执行后会自动遍历目录下所有.mbt文件,直接修改编码且不改变文件名
注意事项
- 建议执行脚本前先备份所有.mbt文件,避免操作失误导致数据丢失
- 如果需要处理子目录内的.mbt文件,只需要给
Get-ChildItem命令加上-Recurse参数即可:Get-ChildItem -Path $TargetDir -Filter "*.mbt" -File -Recurse - 脚本不会修改文件内容和文件名,仅移除UTF8 BOM头,处理后的文件可直接导入目标软件使用
内容的提问来源于stack exchange,提问作者Stuxnet
相关产品推荐
相关产品推荐

