UTF8 BOM 付ける Windows
で検索すると以下のページが出てきました。
WindowsですべてのUTF-8ファイルにBOMを付ける、たったひとつの冴えたやり方
PowerShell
1get-childitem * -include *.cpp,*.hpp -Recurse | foreach-object {((&{if ((Compare-Object (get-content $_.FullName -encoding byte)[0..2] @(0xEF, 0xBB, 0xBF)).length -eq 0){ @() } else { ([byte[]] @(0xEF, 0xBB, 0xBF)) } }) + (get-content $_.FullName -encoding byte)) | set-content $_.FullName -encoding byte}
PowerShellのみで処理できます。
*.cpp,*.hpp
の部分は処理したいファイル名に合わせて変更してください。
質問が編集されたので追記。
サーバー1で出力されるファイルが間違いなくBOMなしのUTF8ファイルだというのであれば、ファイルの先頭に固定で0xEF 0xBB 0xBFをつけるだけでよいのでは?
1ファイル、BOMなしかを確認せずに決め打ちで追加する場合。
PowerShell
1((&{([byte[]] @(0xEF, 0xBB, 0xBF))}) + (get-content BOM追加するファイルパス -encoding byte)) | set-content BOM追加するファイルパス -encoding byte