pdiddo
Goto Top

Falsche Umlaute beim auslesen einer .txt mit batch

Hi Leute,

ich habe folgendes Problem:

Ich möchte mit einer Batch Datei eine .txt Datei auslesen.

Das ausgelesene wird dann mit echo %var1%.....%var20% wiedergegeben.
Dabei werden die Umlaute ÜüÖöÄä un ß im cmd falsch dargestellt.

Ich habe chcp 1252 un das cmd ist in den Eigenschaften auf Schriftart 'Lucida Console'

Also wenn ich echo ÜüÖöÄäß eingebe wird auch ÜüÖöÄäß wiedergegeben.

Nur beim Auslesen der .txt wird es falsch ausgelesen/wiedergegeben.

Vielen Dank schonmal für Eure Hilfe face-smile

Hier mein Script
______________________________________________________________________________
chcp 1252

@echo off &setlocal
for /f "delims=" %%i in (beliebige.txt) do set tempvar=%%i &call :sub

echo %var1%
echo %var2%
...
echo %var20%

pause

goto :eof

:sub
set /a n+=1
set var%n%=%tempvar%
goto :eof
______________________________________________________________________________

Content-ID: 302760

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

rubberman
Lösung rubberman 24.04.2016 um 19:20:42 Uhr
Goto Top
Hallo pdiddo,

wie oft wir diese Frage wohl schon beantwortet haben ...
@echo off &setlocal
>nul chcp 1252
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "beliebige.txt"') do set "var%%i=%%j" &set /a "n=%%i"  

>nul chcp 850
setlocal EnableDelayedExpansion
for /l %%i in (1 1 %n%) do echo(!var%%i!
pause
Nun hätte ich aber auch eine Frage. Warum speichert man erst jede Zeile in eine Variable, wenn man ebenso gut gleich mit der FOR Variable der ersten Schleife arbeiten könnte?

Grüße
rubberman
pdiddo
pdiddo 24.04.2016 aktualisiert um 20:04:14 Uhr
Goto Top
Mein Problem war, dass die .txt in einer UFT-8 Codierung gespeichert war. Da geht es tatsächlich nicht, dass Umlaute angezeigt werden.
Ich musste diese erst in eine ANSI Codierung umwandeln (auch über eine batch). Und tadaaaa! Es geht.


Zu deiner Frage, ich wusste es einfach nicht besser! Aber danke für dein skript !!! face-smile
Aber einen Vorteil hate es, wenn man nur einzelne Zeilen an andere Programme wuedergeben will, kann man sich diese raussuchen.


LG

pdiddo