Script o.ä. gesucht, das Inhalte von Dateien nach Wunsch ändert

  • Hiho.

    Ich hoffe, dies ist das richtige Forum.

    Ich suche ein Script, das in etwa folgendes macht:

    Alle (html-) Dateien eines Ordners scannen nach einem Stichwort, z.B. "cgi-bin" und ändern in etwas anderes, z.B. "comments", alles andere aber so belassen und jeweils (unter dem selben Namen) speichern. Kennt jemand sowas? Darf auch was kosten. (Windows)

    Hintergrund:

    Ich habe zw. 2002 und 2009 einen Blog geführt, bei parsimony (falls das noch jemand kennt). Parsimony hat dicht gemacht und ich habe den ganzen Blog nun auf meiner Festplatte incl. Fotos und Videos, und möchte dies nun auf meinen Webspace bei Strato hochladen. Gesagt, getan.

    Jetzt gibt es das Problem, dass es innerhalb des Blogs einen Ordner gibt namens "cgi-bin", in dem aber nur ganz gewöhnliche html-Dateien sind (ca. 1.000). Klickt man auf einen Link, der auf eine Seite aus "cgi-bin" verweist, spuckt strato einen 500-Error raus. Der Strato-Support sagt, das sei wohl so, weil der Ordner "cgi-bin" heiße, und der Server damit etwas anderes erwarte, als html-Dateien. Bei mir lokal funzt alles einwandfrei. Laut Support gibt es keine Möglichkeit, dem Server zu sagen, er solle ihn als html-Ornder interpretieren, außer ihn umzubenennen. Dann aber stimmen natürlich die ganzen Verlinkungen nicht mehr. Daher suche ich Hilfe, vielleicht ein Script o.ä.

    Wäre für jede Hilfe sehr dankbar,

    LG, Alinapapa

  • Mit PHP sollte das mit relativ wenig Aufwand möglich sein.
    Mit 'scandir' (http://php.net/manual/de/function.scandir.php) die vorhandenen Datei einlesen.
    In einer 'For Each' Schleife (http://php.net/manual/de/control-structures.foreach.php) dann jede gefundene Datei
    - einlesen mit 'file_get_contents($datei)' (http://php.net/manual/de/function.file-get-contents.php)
    - austauschen der Textstellen mit 'str_replace' (http://php.net/manual/de/function.str-replace.php)
    - speichern der geänderten Datei mit 'file_put_contents' (http://php.net/manual/de/function.file-put-contents.php)
    fertig!

    if(!sleep)

    {$sheep++;}

  • Ach du Schande...... :roll:

    Vielen Dank schon mal.

    Ich versteh da so gut wie gar nichts. :lol: Auf dem Strato-Server will (und kann?) ich da auch gar nicht rumwerkeln.
    Ich hatte vor, die Dateien lokal auf meiner Platte zu verändern und dann neu hochzuladen.

    Ich vermute, da funktioniert deine Methode nicht, oder?

    LG, Alinapapa

    Nachtrag: Hab mir deine Tipps nochmal zu Herzen genommen - ich vermute, du meinst schon, lokal die Daten zu editieren?
    Aber muss ich das für jede Datei einzeln machen? Es sind einige tausend. Das müsste auf jeden Fall automatisiert laufen. Viele Grüße

    2 Mal editiert, zuletzt von Alinapapa (20. Dezember 2017 um 18:31)

  • Ja - soll natürlich lokal ablaufen und wenn dann auch 'automatisch'. Also alle Dateien ohne weiteren manuellen Eingriff.

    Aber ich habe gerade mal den Vorschlag von @Bandit aufgefasst! Ja, das ist tatsächlich eine sehr gute Möglichkeit dein Problem zu lösen! Mit Notepad++ kann man dateiübergreifend solche Änderungen durchführen (Danke Bandit... ich arbeite zu selten mit Notepad++, diese Funktion war mir neu).

    if(!sleep)

    {$sheep++;}

  • Jeder halbwegs vernünftige Editor kann das, z.B. Notepad++

    Yeahhhhh!!!!!

    Für die meisten wahrscheinlich ein Gähner.
    Für mich genau die richtige Antwort! Viiiielen Dank!

    Musste etwas suchen, wg. 64 bit, hab dann die abgespeckteste Version genommen. Hier zu finden: https://notepad-plus-plus.org/download/v7.5.3.html

    War eigentlich selbsterklärend. In nicht mal 2 min. hat der Editor alle Files durchgerattert. Den umbenannten Ordner samt neuen Files upgeloaded - und siehe da... es geht!!!! :-D:-D:-D:-D:-D

    Vielen Dank Bandit und danke auch Sailor. Ach ja, und Frohe Weihnachten. :)