kostenloser Webspace werbefrei: lima-city


Batch-Dateien mit PHP schreiben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    johny7

    johny7 hat kostenlosen Webspace.

    Ich habe ein Problem. Wenn ich folgendes Programm ausführe
    <?php
    $f=fopen("C:/bat.bat","w");
    fwrite($f,"md C:\Höhle");
    fclose();
    exec("start C:\Bat.bat");
    ?>

    dann wird der Ordner H³hle angelegt.
    Wie kann ich das verhindern? Das Problem besteht bei allen Umlauten.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Überprüfe doch erst mal, ob PHP das ö in eine ³ verwandelt, oder, ob die Batch Datei es umwandelt.
    Vermutlich ist es das Batch Script. Um ein Verzeichnis mit einem Umlaut zu erstellen musst du wahrscheinlich das ö durch eine bestimmte Buchstabenkombination ersetzen, die dann als ö interpretiert wird.

  4. Überprüfe doch erst mal, ob PHP das ö in eine ³ verwandelt, oder, ob die Batch Datei es umwandelt.
    Vermutlich ist es das Batch Script. Um ein Verzeichnis mit einem Umlaut zu erstellen musst du wahrscheinlich das ö durch eine bestimmte Buchstabenkombination ersetzen, die dann als ö interpretiert wird.


    Wenn es am PHP liegt ersetze es durch ein &ouml;
    Habe etwas gegooglet, unter Batch ist dies nicht so einfach zu ersetzen also würde ich auf ein oe pledieren. Ist dir das ö denn so wichtig?

    Edit: Hm dumm gelaufen, jetzt hat es mir die Kombination auch gleich umgewandelt.
    &ouml;


    Beitrag geaendert: 11.4.2007 12:37:05 von luziver
  5. Autor dieses Themas

    johny7

    johny7 hat kostenlosen Webspace.


    Überprüfe doch erst mal, ob PHP das ö in eine ³ verwandelt, oder, ob die Batch Datei es umwandelt.
    Vermutlich ist es das Batch Script. Um ein Verzeichnis mit einem Umlaut zu erstellen musst du wahrscheinlich das ö durch eine bestimmte Buchstabenkombination ersetzen, die dann als ö interpretiert wird.

    Ich habe die Batch-Datei mit Notepad geöffnet: Dort wird alles normal dargestellt. Das Problem liegt wohl bei cmd/MS-DOS.



    Habe etwas gegooglet, unter Batch ist dies nicht so einfach zu ersetzen also würde ich auf ein oe pledieren. Ist dir das ö denn so wichtig?


    Das Problem ist, dass ich eine Funktion habe, die mit Batch Verzeichnisse kopiert. Wenn der Anwender alle Umlaute in oe umwandelt klappt alles. Aber bei
    fwrite($f,"copy ".$quelle." ".$ziel);
    und Umlauten in den Verzeichnisnamen klappt das dann nicht so recht...

    Ich vermute mal, dass das alles am Zeichensatz liegt. Gibt es denn unter Batch nicht so etwas ähnliches wie
    chr ( int ascii \);
    ?
    Wär nett, wenn mir da mal jemand weiterhelfen könnte!

    Beitrag geaendert: 12.4.2007 9:18:33 von johny7
  6. Hmm hab das auch gerade mal getestet.
    Es scheint tatsächlich am Zeichensatz zu liegen. Erst dachte ich es wird kein ö unterstützt, aber an der Eingabeaufforderung selbst kann man ja "md Höhle" angeben.
    Ich nehme an, dass die Zeichen
    beim Notepad im Zeichensatz cp1252,
    beim Dos im Zeichensatz cp850 (Dos Latin1) oder cp437 (Dos Latin1 US) vorliegen.

    Du könntest ja evtl. im PHP schon eine Zeichenkodierung vornehmen und die "falschen Zeichen" abspeichern. Bei der Ausführung ist es ja dann richtig und das willst du ja und nicht dass es schön aussieht ;-)

    Grüßle
  7. p**i

    Moin,

    Die Eingabeaufforderung akzeptiert zumindest Unicode.
    Versuche also mal Deine Höhle in H\u00f6le umzuformen.
    Ansonsten schaue doch mal ob es eventuell einen Zeichensatz für PHP gibt,
    der das Ganze so interpretiert, dass die Umformung passt.

    Unicode-Tabelle: Programme -> Zubehör -> Zeichentabelle -> unten links im Fenster für jedes Zeichen

    Gruß,
    Puni

    Beitrag geaendert: 12.4.2007 10:53:10 von puni
  8. Autor dieses Themas

    johny7

    johny7 hat kostenlosen Webspace.

    Danke erst mal... ich hoffe, das wird so klappen...
  9. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Tschuldigung das ich frage, soll auch nicht so ein Beitrag werden, warum machst du nicht bla bla bla ...
    Mich würde nur interessieren, wozu das dient mit dem (für mich sieht's so aus) Umweg über die Batch-Datei. Weil wenn du zum Anlegen der Verzeichnisse die PHP-Funktionen verwendest, besteht das Problem mit den Umlauten vielleicht nicht!?
    Also: das trägt sicher nicht zu deiner Problemlösung bei, mich würd's einfach nur interessieren, man lernt ja nie aus!
  10. @burgi: naja wir gehen mal davon aus dass er nicht nur ein Ordner anlegen will ;-) Ich hoffe er will mehr mit der Batch machen :-D

    Grüßle
  11. Autor dieses Themas

    johny7

    johny7 hat kostenlosen Webspace.


    Tschuldigung das ich frage, soll auch nicht so ein Beitrag werden, warum machst du nicht bla bla bla ...
    Mich würde nur interessieren, wozu das dient mit dem (für mich sieht's so aus) Umweg über die Batch-Datei. Weil wenn du zum Anlegen der Verzeichnisse die PHP-Funktionen verwendest, besteht das Problem mit den Umlauten vielleicht nicht!?
    Also: das trägt sicher nicht zu deiner Problemlösung bei, mich würd's einfach nur interessieren, man lernt ja nie aus!

    Ich hatte vor, eine Funktion zum Kopieren ganzer Verzeichnisstrukturen zu schreiben. Aber da gab es, wie du unter http://www.lima-city.de/boards/thread/60432 nachlesen kannst Fehler.
    Ich arbeite nämlich unter WinXP und dort ist die Rechte-Verwaltung anders als bei Linux/Unix. Deshalb bin ich auf Batch-Dateien umgestiegen, dort klappt es immer. Außerdem behalten die Dateien beim Kopieren mit Batch ihre WIN-Atribute (z.B. Versteckt, Schreibgeschützt etc.), was bei copy() nicht so ist.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!