Probleme mit Umlauten bei Übergabe an VBS (Exiftool charset)
Hallo, ich habe folgendes Problem.
Ich möchte mit einer Batchdatei eine MP4-Videodatei mittels Exif auslesen und die ausgelesenen Tags dann in eine XML-Datei schreiben.
Das auslesen funktioniert auch mit der Batch ohne weiteres ich kann auch die Parameter an das Vbscript übergeben, das mir dann eine XMl-Datei erstellt.
Mein Problem sind nun die Umlaute. Wenn ich die ausgelesenen Tags in eine TXT-Datei umleite bekomme ich keine Probleme, dann werden mir die Umlaute sauber in der TXT-Datei angezeigt.
Wenn ich aber die Tags in den Variablen anzeigen lasse bzw. diese an das Vbsscript übergebe kommt nur noch mist dabei raus.
Habe schon ein bisschen nachgelesen, aber entweder stehe ich aufm Schlauch oder ich mache was falsch.
Ich habe schon versucht die Codepage zu ändern auf 1252 leider ohne Erfolg.
Die Kodierung meiner Batch habe ich auf OEM850 geändert dann bekomme ich zumindest ein echo äää auch als dieses angezeigt aber nicht die Tags.
Ein ändern der Sprache auf MS-Dos hat auch nichts gebracht.
Schätze ich werde irgendwo noch einen Fehler haben oder etwas falsch verstanden haben.
Vielleicht kann mir hier ja jemand weiter helfen.
Ein kompletter umstieg auf VBS kommt für mich leider nicht in Frage da ich mich nur sehr dürftig damit auskenne.
Hier der Batchcode.
EDIT:
Lösung:
An den Anfang der Bat-Datei ein CHCP 1252.
Außerdem den Exifaufruf erweiterten
'T:\exiftool\exiftool.exe -charset Latin -Title -TrackNumber -DiskNumber -TVNetworkname -TVSeason -TVEpisode -Description -LongDescription -ContentCreateDate -Genre
Die Kodierung der BAT-File und der VBS-File muss ANSI sein.
Danach klappt die Übergabe und die Ausgabe in die XML-Datei.
Wer allerdings in der Konsole es auch richtig angezeigt bekommen möchte als Echo z.B. muss den Type Font der Konsole auf Lucida ändern.
Gruß
Ich möchte mit einer Batchdatei eine MP4-Videodatei mittels Exif auslesen und die ausgelesenen Tags dann in eine XML-Datei schreiben.
Das auslesen funktioniert auch mit der Batch ohne weiteres ich kann auch die Parameter an das Vbscript übergeben, das mir dann eine XMl-Datei erstellt.
Mein Problem sind nun die Umlaute. Wenn ich die ausgelesenen Tags in eine TXT-Datei umleite bekomme ich keine Probleme, dann werden mir die Umlaute sauber in der TXT-Datei angezeigt.
Wenn ich aber die Tags in den Variablen anzeigen lasse bzw. diese an das Vbsscript übergebe kommt nur noch mist dabei raus.
Habe schon ein bisschen nachgelesen, aber entweder stehe ich aufm Schlauch oder ich mache was falsch.
Ich habe schon versucht die Codepage zu ändern auf 1252 leider ohne Erfolg.
Die Kodierung meiner Batch habe ich auf OEM850 geändert dann bekomme ich zumindest ein echo äää auch als dieses angezeigt aber nicht die Tags.
Ein ändern der Sprache auf MS-Dos hat auch nichts gebracht.
Schätze ich werde irgendwo noch einen Fehler haben oder etwas falsch verstanden haben.
Vielleicht kann mir hier ja jemand weiter helfen.
Ein kompletter umstieg auf VBS kommt für mich leider nicht in Frage da ich mich nur sehr dürftig damit auskenne.
Hier der Batchcode.
@echo off
set "cntr1=0"
set "cntr2=0"
set "cntr3=0"
set staffel_txt=One Piece - Mux Tool - Staffelliste.txt
set "test=T:\KUC NG OP Mux Tool\One Piece - Mux Tool V1 1 [KUC NG]\One Piece - Mux Tool - Staffelliste.txt"
:TagsAuslesen
setlocal enabledelayedexpansion
set "pfad=%1"
set "pfad1=%~dp1"
set /a "cntr1+=1"
set /a "cntr3+=1"
set /a "cntr4=%cntr3%+1"
set /a "cntr5=%cntr3%+2"
set "ChapterUID=%cntr3%%cntr4%%cntr5%"
for /f "tokens=2,3,4 delims=:" %%o in ('T:\exiftool\exiftool.exe -Title -TrackNumber -DiskNumber -TVNetworkname -TVSeason -TVEpisode -Description -LongDescription -ContentCreateDate -Genre %Pfad%') do (
set /a cntr2=!cntr2! + 1
set tag!cntr2!=%%o %%p %%q
)
for /f "tokens=1,2,3,4 delims=^&" %%a in ("%tag10%") do set "Genre1=%%a" & set "Genre2=%%b" & set "Genre3=%%c" & set "Genre4=%%d"
set "Title=%tag1%"
set "TrackNumber=%tag2:~0,-7%"
set "DiskNumber=%tag3:~0,-7%"
set "TVNetworkname=%tag4%"
set "TVSeason=%tag5%"
set "TVEpisode=%tag6%"
set "Description=%tag7%"
set "LongDescription=%tag8%"
set "ContentCreateDate=%tag9%"
:LeerzeichenEntfernen
:loop1
if "%Title:~0,1%"==" " set "Title=%Title:~1%" & goto :loop1
if "%TrackNumber:~0,1%"==" " set "TrackNumber=%TrackNumber:~1%" & goto :loop1
if "%DiskNumber:~0,1%"==" " set "DiskNumber=%DiskNumber:~1%" & goto :loop1
if "%TVNetworkname:~0,1%"==" " set "TVNetworkname=%TVNetworkname:~1%" & goto :loop1
if "%TVSeason:~0,1%"==" " set "TVSeason=%TVSeason:~1%" & goto :loop1
if "%TVEpisode:~0,1%"==" " set "TVEpisode=%TVEpisode:~1%" & goto :loop1
if "%Description:~0,1%"==" " set "Description=%Description:~1%" & goto :loop1
if "%LongDescription:~0,1%"==" " set "LongDescription=%LongDescription:~1%" & goto :loop1
if "%ContentCreateDate:~0,1%"==" " set "ContentCreateDate=%ContentCreateDate:~1%" & goto :loop1
if "%Genre1:~0,1%"==" " set "Genre1=%Genre1:~1%" & goto :loop1
if "%Genre2:~0,1%"==" " set "Genre2=%Genre2:~1%" & goto :loop1
if "%Genre3:~0,1%"==" " set "Genre3=%Genre3:~1%" & goto :loop1
if "%Genre4:~0,1%"==" " set "Genre4=%Genre4:~1%" & goto :loop1
:loop2
if "%Title:~-1%"==" " set "Title=%Title:~0,-1%" & goto :loop2
if "%TrackNumber:~-1%"==" " set "TrackNumber=%TrackNumber:~0,-1%" & goto :loop2
if "%DiskNumber:~-1%"==" " set "DiskNumber=%DiskNumber:~0,-1%" & goto :loop2
if "%TVNetworkname:~-1%"==" " set "TVNetworkname=%TVNetworkname:~0,-1%" & goto :loop2
if "%TVSeason:~-1%"==" " set "TVSeason=%TVSeason:~0,-1%" & goto :loop2
if "%TVEpisode:~-1%"==" " set "TVEpisode=%TVEpisode:~0,-1%" & goto :loop2
if "%Description:~-1%"==" " set "Description=%Description:~0,-1%" & goto :loop2
if "%LongDescription:~-1%"==" " set "LongDescription=%LongDescription:~0,-1%" & goto :loop2
if "%ContentCreateDate:~-1%"==" " set "ContentCreateDate=%ContentCreateDate:~0,-1%" & goto :loop2
if "%Genre1:~-1%"==" " set "Genre1=%Genre1:~0,-1%" & goto :loop2
if "%Genre2:~-1%"==" " set "Genre2=%Genre2:~0,-1%" & goto :loop2
if "%Genre3:~-1%"==" " set "Genre3=%Genre3:~0,-1%" & goto :loop2
if "%Genre4:~-1%"==" " set "Genre4=%Genre4:~0,-1%" & goto :loop2
for /f "tokens=2 delims=^=" %%a in ('findstr /I "Staffel%DiskNumber%=" "%test%"') do set "TotalParts=%%a"
set "ContentCreateDate=%ContentCreateDate: =-%"
:XmlErstellen
setlocal disabledelayedexpansion
wscript.exe "PfadzurVBS\Figure 1.vbs" "%Title%" "%TrackNumber%" "%DiskNumber%" "%TVNetworkname%" "%TVSeason%" "%TVEpisode%" "%Description%" "%LongDescription%" "%ContentCreateDate%" "%ChapterUID%" "%TotalParts%" "%Genre1%" "%Genre2%" "%Genre3%" "%Genre4%"
pause
shift
if not [%1]== goto TagsAuslesen
EDIT:
Lösung:
An den Anfang der Bat-Datei ein CHCP 1252.
Außerdem den Exifaufruf erweiterten
'T:\exiftool\exiftool.exe -charset Latin -Title -TrackNumber -DiskNumber -TVNetworkname -TVSeason -TVEpisode -Description -LongDescription -ContentCreateDate -Genre
Die Kodierung der BAT-File und der VBS-File muss ANSI sein.
Danach klappt die Übergabe und die Ausgabe in die XML-Datei.
Wer allerdings in der Konsole es auch richtig angezeigt bekommen möchte als Echo z.B. muss den Type Font der Konsole auf Lucida ändern.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 383451
Url: https://administrator.de/contentid/383451
Ausgedruckt am: 23.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
was spricht dagegen, in der VBS die übergebenen Parameter mittels Suchen-Erstzen zu "normalisieren". Die falschen Umlaute kommen doch immer mit dem selben Zeichencode rüber, oder?
Bsp.:
E.
Edit:
Für das Ersetzen natürlich eine Funktion bauen, damit Du nicht für alle Parameter einzeln diese Replace-Kommandos brauchst.
was spricht dagegen, in der VBS die übergebenen Parameter mittels Suchen-Erstzen zu "normalisieren". Die falschen Umlaute kommen doch immer mit dem selben Zeichencode rüber, oder?
Bsp.:
'Ä
Const Ae = Chr(0815)
Title = Replace(Title, Ae, "Ä")
E.
Edit:
Für das Ersetzen natürlich eine Funktion bauen, damit Du nicht für alle Parameter einzeln diese Replace-Kommandos brauchst.
Ich weiß nicht was exiftool auswirft und wie/ob es auf die Änderung der Codepage reagiert. Irgendwie sollte das aber helfen. Lass mal die Codierung des Scripts bei Windows-1252 (so wie es Notepad bei Einstellung Ansi eigentlich speichern sollte). Dann spiel mal ein bisschen mit folgenden Konfigurationen in allen Kombinationsmöglichkeiten:
- das
- das
- Aufruf des VBScripts mit
Steffen
- das
CHCP 1252
an den Anfang des Scripts- das
CHCP 1252
nach der Schleife mit dem exiftool Aufruf- Aufruf des VBScripts mit
cscript.exe //nologo
statt wscript.exe
Steffen
Das klingt aber eigentlich sehr vielversprechend. Script in Windows-1252 speichern und gleich am Anfang des Scripts das
Steffen
CHCP 1252
dann sollte die Sache funktionieren.Steffen
Zitat von @Django.Durano:
Die Bat-Datei ist in der Kodierung ANSI und nun passt es am Ende in der XMl-Datei.
ANSI ist eine Gruppe von unterschiedlichsten Codierungen. Aber wie oben schon geschrieben, bedeutet das dass die Defaultcodierung herangezogen wird, was hierzulande Windows-1252 sein sollte. Passt.Die Bat-Datei ist in der Kodierung ANSI und nun passt es am Ende in der XMl-Datei.
Allerdings in der Konsole bekomme ich es immer noch nicht richtig angezeigt.
Das erfordert mehr Aufwand. Wenn du es nicht brauchst, lass es Steffen