soritose
Goto Top

Batch schreibt keine Umlaute (äöü)

Hallo,

ich bins mal wieder und ich habe wieder ein Batch-Problem.

Ich schreibe gerade eine Suche die den Namen von Imdb ausliest. Den Link übergebe ich mit der Imdb Nummer und ich bekomme eine Antwort von der Seite. Aus dem HTML Text muss ich eine Zeile auslesen und das funktioniert auch ganz gut. Nur wenn ich dann einige Zeichen ersetze und sie wieder in eine txt-Datei schreibe sind die Umlaute wie z.B. "äöü" weg.

Hier mal meine bat-Datei:

 
@ECHO OFF
set IMDB=%1
echo %IMDB%
pause

D:\test-ortner\curl.exe -d -i http://www.imdb.com/title/%IMDB%/ >D:\test-ortner\imdb.txt

pause
C:\Windows\System32\findstr.exe /L /C:"og:title" D:\test-ortner\imdb.txt>D:\test-ortner\imdb-suche.txt  
FOR /F "tokens=1,2 delims=<" %%A IN ('c:\windows\System32\findstr.exe /V /C:"soritose" D:\test-ortner\imdb-suche.txt') DO (  
set IMDB-SUCHE=%%B
)
echo %IMDB-SUCHE%D:\movie4k-kinox\test-ortner\imdb-suche-ende.txt

----------------------------------------------------------------------------------------
rem bis hier get alles da gibt er alles noch mit äöü in eine txt datei
----------------------------------------------------------------------------------------

FOR /F "tokens=1,2,3 delims==" %%A IN ('c:\windows\System32\findstr.exe /V /C:"soritose" D:\test-ortner\imdb-suche-ende.txt') DO (  
set IMDB-SUCHE1=%%C
)
echo %IMDB-SUCHE1%>D:\test-ortner\imdb-suche-ende1.txt
FOR /F "tokens=*" %%a IN ('c:\windows\System32\findstr.exe /V /C:"soritose" D:\test-ortner\imdb-suche-ende1.txt') DO set IMDB-SUCHE2=%%a  

set IMDB-SUCHE3=%IMDB-SUCHE2: =+%
set IMDB-SUCHE4=%IMDB-SUCHE3:"=══%  
set IMDB-SUCHE5=%IMDB-SUCHE4:+(=══%
echo %IMDB-SUCHE5%>D:\test-ortner\imdb-suche-ende2.txt

FOR /F "tokens=1-4 delims=══" %%A IN ('c:\windows\System32\findstr.exe /V /C:"soritose" D:\movie4k-kinox\test-ortner\imdb-suche-ende2.txt') DO (  
set name1=%%A
set name2=%%B
set name3=%%C
set name4=%%D
)

echo %name1%
pause


Ich würde mich freuen, wen mir da wieder jemand helfen könnte.
Vielen Dank

Content-ID: 230305

Url: https://administrator.de/contentid/230305

Ausgedruckt am: 24.11.2024 um 09:11 Uhr

Sheogorath
Sheogorath 19.02.2014 aktualisiert um 01:06:40 Uhr
Goto Top
Moin,

wenn man nach "umlaute in Batch" sucht, findet man da relativ schnell was... Hier die Lösung:

chcp 1252

steht für Change Codepage einfach oben einfügen, fertig.

Infos:
http://www.pctipp.ch/tipps-tricks/kummerkasten/windows-7/artikel/window ...

Gruß
Chris
DerWoWusste
DerWoWusste 19.02.2014 um 08:07:51 Uhr
Goto Top
Moin.

Wenn chcp nicht helfen sollte (war es nicht so, dass damit nur die Ausgabe in der Shell beeinflusst werden konnte?), dann nimm dies http://www.richpasco.org/utilities/cp850win.html
Sheogorath
Sheogorath 19.02.2014 um 08:29:37 Uhr
Goto Top
Moin,

Zitat von @DerWoWusste:

Moin.

Wenn chcp nicht helfen sollte (war es nicht so, dass damit nur die Ausgabe in der Shell beeinflusst werden konnte?)

also meines Wissens (ich nutze einfach keine Umlaute) dreht chcp nur die Verarbeitung nicht die Ausgabe.

Gruß
Chris
soritose
soritose 19.02.2014 aktualisiert um 23:40:30 Uhr
Goto Top
hallo

und danke für eure antworten aber leider bringen sie mir alle nicht

bis da hin schreibt er die suche auch alle Sonderzeichen mit rein


echo %IMDB-SUCHE1%>D:\test-ortner\imdb-suche-ende1.txt

das ist in der txt Datei drin imdb-suche-ende1.txt
"CSI - Den Tätern auf der Spur (TV Series 2000– )" /

ab jest kommt das Problem

FOR /F "tokens=*" %%a IN ('c:\windows\System32\findstr.exe /V /C:"soritose" D:\test-ortner\imdb-suche-ende1.txt') DO set IMDB-SUCHE2=%%a

das ist die Ausgabe

D:\test-ortner>set IMDB-SUCHE2="CSI - Den T├ñtern auf der Spur (TV Series 2000ÔÇô )" /

set IMDB-SUCHE3=%IMDB-SUCHE2: =+%
echo %IMDB-SUCHE3%

D:\test-ortner>set IMDB-SUCHE3="CSI+-+Den+T├ñtern+auf+der+Spur+(TV+Series+2000ÔÇô+)"+/

set IMDB-SUCHE4=%IMDB-SUCHE3:"=══%

D:\test-ortner>set IMDB-SUCHE4=══CSI+-+Den+T├ñtern+auf+der+Spur+(TV+Series+2000ÔÇô+)══+/

set IMDB-SUCHE5=%IMDB-SUCHE4:+(=══%

D:\test-ortner>set IMDB-SUCHE5=══CSI+-+Den+T├ñtern+auf+der+Spur══TV+Series+2000ÔÇô+)══+/

echo %IMDB-SUCHE5%>D:\movie4k-kinox\test-ortner\imdb-suche-ende2.txt

D:\test-ortner>echo ══CSI+-+Den+T├ñtern+auf+der+Spur══TV+Series+2000ÔÇô+)══+/ 1>D:\movie4k-kinox\test-ortner\imdb-suche-ende2.txt

und das schreibt er dan in die txt rein

ÍÍCSI+-+Den+Tätern+auf+der+SpurÍÍTV+Series+2000–+)ÍÍ+/
soritose
soritose 19.02.2014 um 11:49:45 Uhr
Goto Top
also meines Wissens (ich nutze einfach keine Umlaute) dreht chcp nur die Verarbeitung nicht die Ausgabe.


das problem ist das ich nicht bestimrn kann ob er äöü drin hat
Sheogorath
Sheogorath 19.02.2014 um 16:44:54 Uhr
Goto Top
Moin,

Zitat von @soritose:

> also meines Wissens (ich nutze einfach keine Umlaute) dreht chcp nur die Verarbeitung nicht die Ausgabe.


das problem ist das ich nicht bestimrn kann ob er äöü drin hat

ja und? Wenn keines drin ist, ändert sich ja nichts. Probiere es mal aus ;)

Gruß
Chris
soritose
soritose 19.02.2014 um 18:40:49 Uhr
Goto Top
also chcp geht nicht egal was ich da nutze

und das mit den äöü wie soll ich das nicht nehmen wen ich nicht weis ob im name ein äöü vor kommt
Endoro
Endoro 19.02.2014 um 19:39:59 Uhr
Goto Top
Hey,
du könntest deinen Code mal in Tags setzen; so ist der leider nicht zu lesen bzw. nachzustellen.
Gruss.
soritose
soritose 19.02.2014 um 23:41:38 Uhr
Goto Top
 
echo %IMDB-SUCHE1%>D:\test-ortner\imdb-suche-ende1.txt

das ist in der txt Datei drin imdb-suche-ende1.txt
"CSI - Den Tätern auf der Spur (TV Series 2000– )" /

ab jest kommt das Problem
 
FOR /F "tokens=*" %%a IN ('c:\windows\System32\findstr.exe /V /C:"soritose" D:\test-ortner\imdb-suche-ende1.txt') DO set IMDB-SUCHE2=%%a  

das ist die Ausgabe

D:\test-ortner>set IMDB-SUCHE2="CSI - Den T├ñtern auf der Spur (TV Series 2000ÔÇô )" /
 
set IMDB-SUCHE3=%IMDB-SUCHE2: =+%
echo %IMDB-SUCHE3%

D:\test-ortner>set IMDB-SUCHE3="CSI+-+Den+T├ñtern+auf+der+Spur+(TV+Series+2000ÔÇô+)"+/
 
set IMDB-SUCHE4=%IMDB-SUCHE3:"=══%  

D:\test-ortner>set IMDB-SUCHE4=══CSI+-+Den+T├ñtern+auf+der+Spur+(TV+Series+2000ÔÇô+)══+/
 
set IMDB-SUCHE5=%IMDB-SUCHE4:+(=══%

D:\test-ortner>set IMDB-SUCHE5=══CSI+-+Den+T├ñtern+auf+der+Spur══TV+Series+2000ÔÇô+)══+/
 
echo %IMDB-SUCHE5%>D:\movie4k-kinox\test-ortner\imdb-suche-ende2.txt

D:\test-ortner>echo ══CSI+-+Den+T├ñtern+auf+der+Spur══TV+Series+2000ÔÇô+)══+/ 1>D:\movie4k-kinox\test-ortner\imdb-suche-ende2.txt

und das schreibt er dan in die txt rein

ÍÍCSI+-+Den+Tätern+auf+der+SpurÍÍTV+Series+2000–+)ÍÍ+/

so besser Endoro
pieh-ejdsch
pieh-ejdsch 20.02.2014 um 13:27:27 Uhr
Goto Top
Moin,

Was möchtest Du denn entfernen?

Set imdb=%1
pushD D:\test-ortner
curl.exe -d -i http://www.imdb.com/title/%IMDB%/ >imdb.txt 
for /f tokens^=2delims^=^" %%i in ('find "og:title' content=" "imdb.txt" ') do 3>out.txt (echo %%i>&3)  
popD

Gruß Phil
Endoro
Endoro 20.02.2014 aktualisiert um 14:15:32 Uhr
Goto Top
Hey,

die IMDB-Seite sendet alles in utf-8. Aus mir nicht näher bekannten Gründen aber nicht unerwartet kommt cmd /U damit nicht zurecht. Ich würde den Text der Einfachheit halber mit iconv in ANSI CP 1252 umwandeln.
@ECHO OFF &SETLOCAL disableDelayedExpansion
CHCP
FOR /f tokens^=2delims^=^" %%a IN ('wget -q -O- "http://www.imdb.com/title/tt3396548"^|FINDSTR "og:title"') DO ECHO(%%a  
FOR /f tokens^=2delims^=^" %%a IN ('wget -q -O- "http://www.imdb.com/title/tt3396548"^|FINDSTR "og:title"^|iconv -f utf-8 -t cp850') DO ECHO(%%a  
FOR /f tokens^=2delims^=^" %%a IN ('wget -q -O- "http://www.imdb.com/title/tt3396548"^|FINDSTR "og:title"^|iconv -f utf-8 -t cp1252') DO ECHO(%%a  
Active code page: 850
&quot;Heiter bis t├Âdlich - Hubert und Staller&quot; Bl├╝tentr├ñume (TV Episode 2014)
&quot;Heiter bis tödlich - Hubert und Staller&quot; Blütenträume (TV Episode 2014)
&quot;Heiter bis t÷dlich - Hubert und Staller&quot; Bl³tentrõume (TV Episode 2014)
Gruss.