Cooper83: DOS Zeichenmanipulation

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&param2=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

  1. 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

    1. 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