Escape Characters in IPS_Execute cmd/echo funktioniert nicht mehr

Hallo IPS Community,
nach meinem IPS Umzug (WinXP 32 => Win10 64 + IPS v3 => v6) funktionieren die Escape Characters im echo Kommando nicht mehr. Das Escape Character ^ wird bestimmten Sonderzeichen (z.B.: > oder <) vorgesetzt damit es dargestellt wird. Vor meinem Update hat das auch alles problemlos funktioniert.

Auf dem neuen System funktioniert das aber leider nicht mehr und sobald ich das Escape Zeichen ^ verwende wird der cmd/echo Befehlt nicht ausgeführt.
Somit kann ich für PHP bzw. HTML Seiten notwendige Zeichen nicht in eine Webseite umleiten.

Beispiel:

$alarm_icon_start = "^<img src=icon_battery_empty.png^>";
IPS_Execute("cmd.exe ", "/C echo $alarm_icon_start >> example.html", false, true);

Ich habe alles mögliche versucht um die Sonderzeichen „<“ und „>“ in die Datei zu schreiben, ohne Erfolg. Auf dem alten System hat dies funktioniert.

Wie kann ich das Problem lösen?
Danke für Eure Hilfe …
Christian

Hat das einen bestimmten Grund warum du die Windows CMD benutzt um etwas in eine Datei zu schreiben und nicht einfach einen PHP-Befehl wie file_put_contents?
https://www.php.net/manual/de/function.file-put-contents.php

Wenn du von IPS 3 kommst, öffne einmal das Util Control und konvertiere die Scripte nach UTF8. Eventuell geht es dann wieder.
Michael

1 „Gefällt mir“

Danke für den Tipp, aber wenn ich die Funktion „Umlaute Korrigieren“ aus dem Utils Handler nutze wird die betreffende Skript-ID nicht zur Auswahl angeboten was mir signalisiert daß hierzu keine Probleme gefunden wurden.

Warum ich cmd damals genutzt habe kann ich nicht mehr sagen. Es hat zumindest mehr als 10 Jahre problemlos funktioniert. Ich denke alles auf file-put-contents umzustellen wäre mit sehr viel Arbeit verbunden weshalb ich erst einmal am alten Befehl festhalten möchte.

@Nall-chan
Ehrlich gesagt gefällt mir die file_get_contents nach dem Ausprobieren gleich so viel besser, so daß ich jetzt auf diese Variante umstellen werde. Gerade wenn ich dann später doch mal auf Docker umsteigen sollte ist ein PHP Kommando deutlich kompatibler. Danke für den Tipp!