Tilde Zeichen per Batch ersetzen
Hi!
Ich habe eine Datei in Textform, in der Umlaute per Batch umgewandelt werden müssen. Dazu habe ich hier auch schon die prinzipielle Lösung gefunden welche auch super Funktioniert. Dummerweise bestehen die Umlaute in der original Datei aus Sonderzeichen. Nun stehe ich vor dem Problem, dass das "ß" als Tilde "~" vorliegt.
Lässt sich das ~ Zeichen per Batch in ein ß umwandeln?
Weder ^~ noch '~' oder "~" funktionieren...
Vielen Dank!
Grüße,
Blackhawk
Ich habe eine Datei in Textform, in der Umlaute per Batch umgewandelt werden müssen. Dazu habe ich hier auch schon die prinzipielle Lösung gefunden welche auch super Funktioniert. Dummerweise bestehen die Umlaute in der original Datei aus Sonderzeichen. Nun stehe ich vor dem Problem, dass das "ß" als Tilde "~" vorliegt.
Lässt sich das ~ Zeichen per Batch in ein ß umwandeln?
Weder ^~ noch '~' oder "~" funktionieren...
Vielen Dank!
Grüße,
Blackhawk
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273602
Url: https://administrator.de/contentid/273602
Ausgedruckt am: 25.11.2024 um 01:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Blackhawk,
ich kann deine Frage leider auch nicht ganz beantworten, aber ich habe deswegen mal etwas herumgespielt.
Was ich auch tuhe, das ~ muss ich eigentlich nicht escapen. Ich muss nur witzigerweise dafür sorgen, dass es nicht alleine auftritt.
Dann ging es.
Mit dem ß war es auch nicht sehr simpel.
Folgendes hat bei mir geklappt:
Das Problem ist, dass ich hier einen Buchstaben angegeben habe, welcher dem ~ vorsteht. Alleinstehend hat es nicht funktioniert...
Vielleicht ein Workaround?
Einem ß sollte ja immer (wenn es deutscher Text ist) ein Umlaut bevorstehen. so viele sind das nicht
Beste Grüße
Dominique
ich kann deine Frage leider auch nicht ganz beantworten, aber ich habe deswegen mal etwas herumgespielt.
Was ich auch tuhe, das ~ muss ich eigentlich nicht escapen. Ich muss nur witzigerweise dafür sorgen, dass es nicht alleine auftritt.
Dann ging es.
Mit dem ß war es auch nicht sehr simpel.
Folgendes hat bei mir geklappt:
::@echo off
setlocal enableDelayedExpansion
set "toreplace=a~"
set "tocheck=das macht Spa~, oder nicht?"
set "result=!tocheck:%toreplace%=ass!"
echo !result!
::--------------------------
">>>tildeTest.bat
">>>setlocal enableDelayedExpansion
">>>set "toreplace=a~"
">>>set "tocheck=das macht Spa~, oder nicht?"
">>>set "result=!tocheck:a~=ass!"
">>>echo !result!
das macht Spass, oder nicht?
">>>
Vielleicht ein Workaround?
Einem ß sollte ja immer (wenn es deutscher Text ist) ein Umlaut bevorstehen. so viele sind das nicht
Beste Grüße
Dominique
Hallo Blackhawk.
Die Tilde gehört zu den Zeichen (neben * und =) die sich nicht mit der "normalen" Textersetzung innerhalb einer Variable behandeln lassen. Hier gibt es nur unschöne und mehr oder weniger unsichere Workarounds. Bsp.:
Grüße
rubberman
Die Tilde gehört zu den Zeichen (neben * und =) die sich nicht mit der "normalen" Textersetzung innerhalb einer Variable behandeln lassen. Hier gibt es nur unschöne und mehr oder weniger unsichere Workarounds. Bsp.:
@echo off &setlocal
set "var1=Schweinefra~ mit So~e!"
set "var2="
>nul chcp 1252
set "sz=ß"
>nul chcp 850
:loop
for /f "tokens=1* delims=~" %%i in ("%var1%") do (
set "var1=%%j"
if defined var1 (
set "var2=%var2%%%i%sz%"
goto loop
) else (
set "var2=%var2%%%i"
)
)
echo %var2%
pause
rubberman
Und danke für den Hinweis, dass ß nur nach Umlauten kommt.
Das ist falsch!Daumenregel: ß folgt auf lang gesprochene Vokale und Umlaute, sowie Doppelvokale (Ruß, groß, müßig, reißen, schließen, draußen). Bei kurzen Vokalen ist es den neuen Rechtschreibgeboten zufolge zum ss geworden (Fass, Fluss, muss, dass, Missverständnis).
Die tatsächlichen Regeln findest du natürlich im Duden ...
Grüße
rubberman
[OT]
Ich nehme mal an (und halte es für selbstverständlich), dass mit umlauten Vokale gemeint sind...
Lg
Edit: Ich hab's auch verbockt...
@Biber: das hätte ich nicht gewusst.
Nun denn, workaround bleibt workaround.
[/OT]
Ich nehme mal an (und halte es für selbstverständlich), dass mit umlauten Vokale gemeint sind...
Lg
Edit: Ich hab's auch verbockt...
@Biber: das hätte ich nicht gewusst.
Nun denn, workaround bleibt workaround.
[/OT]