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-Key: 230305

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

Printed on: April 19, 2024 at 04:04 o'clock

Member: Sheogorath
Sheogorath Feb 19, 2014 updated at 00:06:40 (UTC)
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
Member: DerWoWusste
DerWoWusste Feb 19, 2014 at 07:07:51 (UTC)
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
Member: Sheogorath
Sheogorath Feb 19, 2014 at 07:29:37 (UTC)
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
Member: soritose
soritose Feb 19, 2014 updated at 22:40:30 (UTC)
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–+)ÍÍ+/
Member: soritose
soritose Feb 19, 2014 at 10:49:45 (UTC)
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
Member: Sheogorath
Sheogorath Feb 19, 2014 at 15:44:54 (UTC)
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
Member: soritose
soritose Feb 19, 2014 at 17:40:49 (UTC)
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
Member: Endoro
Endoro Feb 19, 2014 at 18:39:59 (UTC)
Goto Top
Hey,
du könntest deinen Code mal in Tags setzen; so ist der leider nicht zu lesen bzw. nachzustellen.
Gruss.
Member: soritose
soritose Feb 19, 2014 at 22:41:38 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Feb 20, 2014 at 12:27:27 (UTC)
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
Member: Endoro
Endoro Feb 20, 2014 updated at 13:15:32 (UTC)
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.