Wedekind: "Massen-Rename" in Win-XP

Guten Abend,
kann mir jemand ein Freewareprogramm empfehlen, mit dem ich in einem Verzeichnis und allen Unterverzeichnissen Programmnamen ändern kann,
z.B.  *.htm ===> *.shtml
Schreiben kann ich ein solches nicht, da ich keine Programmierefahrung habe.
Danke

  1. Hallo

    kann mir jemand ein Freewareprogramm empfehlen, mit dem ich in einem Verzeichnis und allen Unterverzeichnissen Programmnamen ändern kann,
    z.B.  *.htm ===> *.shtml

    Ja, folgende Batchdatei sollte Deinen Wunsch erfüllen:

    Einfache Version:
    @ECHO OFF
    FOR /R %%I IN (%1\*.%2) DO REN "%%I" "%%~nI.%3"

    Aufruf: pfad\zu\Skript LW:Pfad\zu\Verzeichnis alt neu

    Erweiterte Version mit Kommentaren:
    @ECHO OFF

    REM ----------------------------------------------------------------
    REM Aufruf: pfad\zu\Skript LW:Pfad\zu\Verzeichnis alt neu
    REM erwartete Übergabeparameter
    REM   Pfad steht in %1
    REM   alte Endung steht in %2
    REM   neue Endung steht in %3
    REM Schalter für rekursives durchlaufen ist /R
    REM Anführungszeichen um die Parameter von REN, damit es keine
    REM Probleme mit Leerzeichen bei den Pfadbezeichnungen bzw. Dateinamen
    REM gibt.
    FOR /R %%I IN (%1\*.%2) DO REN "%%I" "%%~nI.%3"

    Schreiben kann ich ein solches nicht, da ich keine Programmierefahrung habe.

    Diese kann man sich erwerben.
    Tipp: Kopiere die Batchdatei in ein Verzeichnis, das sich im Suchpfad von Windows befindet.

    Freundliche Grüße

    Vinzenz

    1. gudn tach!

      FOR /R %%I IN (%1\*.%2) DO REN "%%I" "%%~nI.%3"

      ich habe es jetzt nicht ausprobiert, aber vermute trotzdem mal, dass es

      FOR /R %1 %%I IN (*.%2) DO REN "%%I" "%%~nI.%3"

      heissen muesste.

      (insofern faend ich auch eine andere parameterreihenfolge, naemlich
        pfad\zu\skript alt neu pfad
        also FOR /R %3 %%I IN (*.%1) DO REN "%%I" "%%~nI.%2"
      besser, da dann der dritte parameter optional wird.)

      prost
      seth

      1. Hallo seth,

        FOR /R %%I IN (%1\*.%2) DO REN "%%I" "%%~nI.%3"

        funzt[tm], hab' ich getestet. Das ist das einzige Argument, was für meine Version spricht. Entstanden durch einfaches Copy & Paste eines etwas älteren Postings.

        ich habe es jetzt nicht ausprobiert, aber vermute trotzdem mal, dass es

        FOR /R %1 %%I IN (*.%2) DO REN "%%I" "%%~nI.%3"

        Ja, laut HELP FOR ist das die richtige Syntax für FOR /R

        (insofern faend ich auch eine andere parameterreihenfolge, naemlich
          pfad\zu\skript alt neu pfad
          also FOR /R %3 %%I IN (*.%1) DO REN "%%I" "%%~nI.%2"
        besser, da dann der dritte parameter optional wird.)

        Das hätte ich selbst nicht besser machen können ;-)
        Du hast doch bestimmt ein Perlskript dazu gepostet ... schnelle Suche ... Treffer :-)

        Freundliche Grüße

        Vinzenz

        1. gudn tach Vinzenz!

          FOR /R %%I IN (%1\*.%2) DO REN "%%I" "%%~nI.%3"

          funzt[tm], hab' ich getestet.

          hmm, ich jetzt auch mal, unter w2k:

          C:\foo\bar>tree /a /f
            Auflistung der Ordnerpfade für Datenträger [...]
            Datenträgernummer: [...]
            C:.
            +---baz
            |       foogle.mp3
            |       oogle.txt
            |
            +---quuux
            |       boogle.c
            |
            ---quux
                    bork.vim
                    gork.pl
                    zork.h

          C:\foo\bar>FOR /R %I IN (c:\foo\bar\*.txt) DO @echo REN "%I" "%~nI.htm"

          C:\foo\bar>FOR /R c:\foo\bar %I IN (*.txt) DO @echo REN "%I" "%~nI.htm"
            REN "c:\foo\bar\baz\oogle.txt" "oogle.htm"

          C:\foo\bar>

          und das macht imho auch sinn, da in der klammer ja ein absoluter pfad angegeben wurde, weshalb die rekursive suche nix bringen kann.
          ist das verhalten unter xp da anders?

          Du hast doch bestimmt ein Perlskript dazu gepostet [...]

          ;-) regulaere ausdruecke sind einfach geila. ;-)

          prost
          seth

      2. moin Forum,

        ich finde es so besser:

        @echo off
        Set /P alt=Wie lautet die alte Dateierweiterung?
        Set /P neu=Wie lautet die neue Dateierweiterung?
        Set /P ordner=In welchem Verzeichnis soll umbenannt werden?
        Echo Im Verzeichnis %ordner% werden die Dateierweiterungen von %alt% auf %neu% umbenannt.
        pause
        FOR /R %ordner% %%I IN (*.%alt%) DO REN "%%I" "%%~nI.%neu%"

        Die Batchdatei in ein Toolverzeichnis, Verknüpfung ins Startmenü, der Rest erfolgt bei Aufruf.

        Gruß

        Tommy

        1. gudn tach!

          ich finde es so besser:
          Set /P [...]

          am besten mag evtl. eine kombination sein:

          zuerst pruefen, ob parameter uebergeben wurden. falls ja, diese verwenden.
          sonst: variablen abfragen.

          der vorteil von parametern ist, dass man solche batchfiles auch wieder gut in anderen batchfiles einbauen kann, um prozesse zu automatisieren, mit denen der user nicht genervt werden soll.

          prost
          seth

  2. Hallo!

    z.B.  *.htm ===> *.shtml

    Ist das wirklich nur ein Beispiel, oder willst du den Batch _nur_ dafür verwenden? Dann wäre es nämlich bedeutend einfacher, wenn du dir eine .htaccess-Datei auf dem Server anlegtst/erweiterst. Die genaue Vorgehensweise ist hier dokumentiert: http://httpd.apache.org/docs/1.3/howto/ssi.html#configuringyourservertopermitssi. Dann sparst du dir, die Links anzupassen. Denn du kannst die Endung "html" behalten.

    MfG
    Primus