bennib22
Goto Top

Umlaute und Sonderzeichen in Batchdateien

Hallo,
man hört und liest immer wieder, dass irgendwer Probleme mit Sonderzeichen in bat-dateien hat.

Das liegt daran, das ihr den normalen Editor verwendet.
Start>Ausführen>notepad
Der verwendet ein anderes Code-System als cmd.
Windows hat aber auch einen "Batch-Editor" mit gleichem Code-System.
Start>Ausführen>edit
Die Maske ist zwar uralt, aber wer sich mit cmd auskennt hat damit keine Probleme.

mfg
bennib22


PS:Ich würde "edit" nur zum Schreiben von Sonderzeichen/Umlauten verwenden!
Für alles andere das ganz normale notepad.

Content-ID: 127778

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

Larz
Larz 26.10.2009 um 11:50:23 Uhr
Goto Top
Hallo Benni,

ich habe das mittlerweile für mich so gelöst, indem ich am Anfang eines jeden Scripts die Codepage kurz umstelle, Variablen für die Umlaute deklariere und danach die Codepage wieder zurücksetze:

chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul

Danach kann ich mit %ue%, %Uue% usw. s%ae%mtliche Umlaute mehr oder weniger "direkt" in Notepad schreiben... edit.com war mir einfach zu umständlich

Gruß
Larz
bennib22
bennib22 26.10.2009 um 11:55:23 Uhr
Goto Top
Hi,
das wusste ich gar nicht!face-smile
Aber ist ne coole Sache.
Pracktisch noch pracktischer.face-smile

Danke und Gruß zurück
bennib22
rubberman
rubberman 04.07.2011 um 00:52:33 Uhr
Goto Top
Hallo Zusammen,

genauso, aber mit der Verwendung der Umlaute als Variablennamen:
@echo off &setlocal

setlocal&for /f "tokens=2 delims=:" %%a in ('chcp') do (set /a oemcp=%%~na&chcp 1252>nul)  
for /f "tokens=1-7" %%a in ('echo Ä Ö Ü ä ö ü ß^&chcp %oemcp%^>nul') do (  
set au=%%a&set ou=%%b&set uu=%%c&set al=%%d&set ol=%%e&set ul=%%f&set sz=%%g)
(endlocal&set Ä=%au%&set Ö=%ou%&set Ü=%uu%&set ä=%al%&set ö=%ol%&set ü=%ul%&set ß=%sz%)

echo Beispiel:
echo %Ä%nderungen der Ma%ß%einheiten f%ü%hren m%ö%glicherweise zu
echo verf%ä%lschten Ergebnissen in der %Ü%bertragsgleichnung.
echo(
pause
Die Zeilen 3-6 machen die Arbeit. Dabei habe ich keinen Wert auf Lesbarkeit gelegt, sondern nur auf Kürze und Prägnanz.
Zum besseren Verständnis was diese 4 Zeilen tun:
REM Eigene Subumgebung.
setlocal

REM Derzeitige ASCII Codepage in Variable packen.
for /f "tokens=2 delims=:" %%a in ('chcp') do set /a oemcp=%%~na  

REM Auf ANSI wechseln.
chcp 1252>nul

REM Temporäre Variablen definieren.
for /f "tokens=1-7" %%a in ('echo Ä Ö Ü ä ö ü ß') do (  
  set "au=%%a"  
  set "ou=%%b"  
  set "uu=%%c"  
  set "al=%%d"  
  set "ol=%%e"  
  set "ul=%%f"  
  set "sz=%%g"  
)

REM Zurück auf ASCII.
chcp %oemcp%>nul

REM Neue Variablen mit den Umlauten als Variablennamen definieren und dabei die Werte aus den temporären Variablen in die Parent Umgebung rüber retten.
(
  endlocal
  set "Ä=%au%"  
  set "Ö=%ou%"  
  set "Ü=%uu%"  
  set "ä=%al%"  
  set "ö=%ol%"  
  set "ü=%ul%"  
  set "ß=%sz%"  
)

Grüße
rubberman