Windows コマンドラインで ANSI テキストファイルを UTF8 に変換する

Windows コマンドラインで ANSI テキストファイルを UTF8 に変換する

ANSI でエンコードされたテキスト ファイル (Win 1252) を、できればコマンド ライン呼び出しで、BOM なしの UTF8 に変換したいと考えています。私のユース ケース: Stata から .tex ファイルをエクスポートし、LuaLaTeX でコンパイルします。Stata はどうやら UTF8 をサポートしていないようです。LuaLaTeX は UTF8 以外をサポートしていないため、一部の非 ASCII 文字で処理が失敗します。Stata 内からシェル コマンドを呼び出すことができるので、Stata スクリプト内からオンザフライで変換を実行できれば便利です。

したがって、理想的には、たとえば のようなコマンドを呼び出せるようにしたいですconvert2UTF.cmd file.tex。別の良いオプションは、フォルダー内のファイルのバッチ変換です (例: *stata.tex ですべてのファイルを変換する)。さらに、ソリューションがデフォルトの Windows ツール (最低でも Win 7、さらに良いのは XP) で動作すれば素晴らしいでしょう。

同様の質問が寄せられているここの前にCygwin/GnuWin32 アプローチマシンに追加のソフトウェアをインストールせずに変換できるようにしたいので、問題があります。PowerShell アプローチ有望に見えますが、どうやらout-file -en utf8ファイルは BOM 付きで保存されるようです。

別のPowerShellアプローチBOMなしでUTF8に変換すると思われるのは

foreach($i in ls -recurse -filter "*.*") {
    if (
        $i.Extension.ToLower() -eq ".tex"
    ) {
        $MyFile = Get-Content $i.fullname 
        [System.IO.File]::WriteAllLines($i.fullname, $MyFile)
    }
}

残念ながら、実行方法がわかりません。PowerShell スクリプトとして .tex ファイルと同じフォルダーに保存しましたが、実行してもファイルには影響しません。何かが足りないようです。言うまでもなく、私の PowerShell の知識はほとんどありません。また、Stata から呼び出すときに、ファイル名を引数として渡したいと思います。

答え1

ADODB.StreamVBS スクリプトとオブジェクトを使用してみてもよいと思います。

Google 検索: 「vbs ファイルを ansi から utf-8 に変換」

関連情報