首页 > 解决方案 > 从txt文件中删除BOM并检查删除是否有效

问题描述

我创建了一个具有简单目标的基本 Powershell 脚本:

  1. 将文件夹中的所有文件复制到另一个文件夹
  2. 从这些文件中删除 BOM
  3. 重命名文件

为此,我创建了一个简单的脚本:

# input & ouput folders
$inputFolder  = 'C:\Users\myName\myInputFolder'
$outputFolder = 'C:\Users\myName\myOutputFolder'

# move files
Copy-item -Force -Recurse -Verbose $inputFolder\* -Destination $outputFolder

# remove bom to files
Get-ChildItem $outputFolder\*  -recurse -Include *.json,*.html,*.xml,*.js,*.txt,*.css | ForEach-Object {
   $content = $_ | Get-Content
   Set-Content -PassThru $_.Fullname $content -Encoding UTF8 -Force
}

# rename files
Get-ChildItem -Path $outputFolder\*.txt | Rename-Item -NewName { $_.Name -replace '.txt','.done.txt' }

我的问题是如何检查我是否从这些文件中正确删除了 BOM。

标签: powershell

解决方案


一种解决方案如下:

foreach ($i in ls -name $inputFolder\*.txt)
{
    $file_content = Get-Content "$inputFolder\$i";
    [System.IO.File]::WriteAllLines("$outputFolder\$i", $file_content);
}

推荐阅读