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.Stream
VBS スクリプトとオブジェクトを使用してみてもよいと思います。