Ich möchte ANSI-kodierte Textdateien (Win 1252) ohne BOM in UTF8 konvertieren, idealerweise über einen Befehlszeilenaufruf. Mein Anwendungsfall: Ich exportiere .tex-Dateien aus Stata, die ich mit LuaLaTeX kompilieren möchte. Stata unterstützt offenbar kein UTF8, LuaLaTeX unterstützt nichts anderes und gerät daher an einigen Nicht-ASCII-Zeichen ins Stocken. Von Stata aus kann ich Shell-Befehle aufrufen, daher wäre es schön, wenn ich die Konvertierung direkt aus meinen Stata-Skripten heraus durchführen könnte.
Idealerweise würde ich also gerne einen Befehl wie z. B. aufrufen können convert2UTF.cmd file.tex
. Eine weitere gute Option wäre eine Stapelkonvertierung von Dateien innerhalb eines Ordners (z. B. alle Dateien mit *stata.tex konvertieren). Außerdem wäre es toll, wenn die Lösung mit den Standard-Windows-Tools funktionieren würde (mindestens Win 7, noch besser XP).
Ähnliche Fragen wurden gestelltHierVor demCygwin/GnuWin32-Ansatzist problematisch, da ich gerne konvertieren möchte, ohne zusätzliche Software auf einem Rechner installieren zu müssen. DiePowershell-Ansatzsieht vielversprechend aus, out-file -en utf8
speichert die Datei aber anscheinend mit BOM.
Ein anderer Powershell-Ansatzdas scheint zu UTF8 ohne BOM zu konvertieren ist
foreach($i in ls -recurse -filter "*.*") {
if (
$i.Extension.ToLower() -eq ".tex"
) {
$MyFile = Get-Content $i.fullname
[System.IO.File]::WriteAllLines($i.fullname, $MyFile)
}
}
Leider kann ich nicht herausfinden, wie ich es ausführen kann. Ich habe es als Powershell-Skript im selben Ordner wie die .tex-Dateien gespeichert, aber wenn ich es ausführe, berührt es diese nicht. Also fehlt anscheinend etwas. Ich muss wohl nicht erwähnen, dass meine Powershell-Kenntnisse so gut wie nichts sind. Außerdem möchte ich einen Dateinamen als Argument übergeben, wenn ich es von Stata aus aufrufe.
Antwort1
Ich denke, Sie können versuchen, ein VBS-Skript und -Objekt zu verwenden ADODB.Stream
.