DOS Zeichenmanipulation
Cooper83
- sonstiges
Hallo Zusammen,
ich bin nun nach 4 oder 5 Stunden Suche mit meinem Latein am Ende und hoffe, dass Ihr mir weiterhelfen könnt. Von der Theorie her ist es nichts dramatisches.
Ich bekomme aus einem Tool A eine Zeichenkette an ein cmd Sckript übergeben. Diese Zeichenkette kann Zeilenumbrüche im Unixformat \r\n enthalten. Ebenso können hier Umlaute oder andere Sonderzeichen vorkommen. Innherhalb des DOS Skriptes rufe ich dann einen Browser inkl. URL auf die u.a. diese Zeichenkette an ein Tool B übergibt.
Die Zeichenkette ist z.B.
dies\r\nist\r\neine\r\nzeichenkette\r\nöäüß
Ich möchte nun, um das ganze URL konform zu bekommen, zum einen den Zeilenumbruch \r\n durch %0D%0A ersetzen und zum Anderen die Umlaute öäü sowie das ß durch die HTML gängigen Zeichen ä ü.... ersetzen.
Das Skript sieht wie folgt aus
@echo OFF
SET DESC=%~3
SET DESC=%DESC:\r\n=%%%0D%%0A%
"programfiles(x86)%\internet explorer\iexplore.exe" "https://meineurl.de?param1=1¶m2=2&description=%DESC%"
Ich bekomme es nicht hin das z.B. aus der oben genannten Zeichenkette jedes vorkommende \r\n durch %0D%0A zu ersetzen. Das Ergebnis im oben genannten Fall wäre
diesisteinezeichenketteöäüß%0D%0A
Er trägt also lediglich am Ende einmalig das %0D%0A ein und schmeißt die \r\n Vorkommen weg. Nehme ich etwas Anderes wie z.B.
SET DESC=%DESC:\r\n=0D0A%
dann wird aus der Beispielkette
dies0D0Aist0D0Aeine0D0Azeichenkette0D0Aöäüß
Sobal ich jedoch ein %-Zeichen mit einbauen möchte, siehrt es wie oben aus.
-----------------------------------------------------------------
Problem 2 - Die Umlaute
Bei den Umlauten ist es nun so, dass hier ä offenbar als Befehl interpretiert wird. Zumindest bekomme ich hier die Ausgabe am Prompt "Der Befehl "auml" ist entweder falsch geschrieben oder konnte nicht gefunden werden"
Auch ein Maskieren mit ^ä funktioniert an der Stelle nicht.
Ich hoffe Ihr könnt mir helfen.
Vielen Dank & schöne Grüße
Daniel
Hallo,
ohne das ich jetzt auf dein Problem eingehe, da gehört ein for schleife davor.
Ich hatte mir mal diesen Link gespeichert.
Gruß
Fred
Hallo,
ohne das ich jetzt auf dein Problem eingehe, da gehört ein for schleife davor.
Ich hatte mir mal diesen Link gespeichert.Gruß
Fred
Hallo Fred,
danke für Deine Rückmeldung. Ich habe heute Morgen die Lösung gefunden um alle vorkommenden \r\n zu ersetzen. Ich habe das Script um
setlocal enabledelayedexpansion
sowie
SET crlf=\r\n
SET subs=%%0D%%0A
SET DESC=!DESC:%crlf%=%subs%!
ersetzt.
Dadurch werden nun alle Zeichen so ersetzt wie ich es brauche.
Auch das Problem mit den Umlauten habe ich nun gelöst.
mit
SET "DESC=!DESC:ä=^ä!"
werden die Zeichen korrekt ersetzt!!
Vielen Dank an alle, die Sich einen Kopf gemacht haben!
Schöne Grüße
Daniel