frankx: dos-batch umbennen von dateinamen geht nit

Hallo,

in einem Ordner Dateien namens artist-titel.jpg, artist1-titel1.jpg.

daraus soll werden: artist-titel-klein.jpg etc.

nun hab ich gefunden, wie einfach mit dos-batch die dateiendungen abgeschnitten werden können.

ren *.jpg *.

bringt die Dateinamen ohne Endung

ren *. *_etwas.jpg

bringt dann artist-titel_etwas.jpg (mit underline)

jetzt kommts: ren *. *-etwas.jpg bring aber dann artist-klein.jpg. D.h. er ersetzt das "-titel" durch das "-klein". Auch das Verpacken in eine Var mit var1="-klein" funzt nicht.

Weiß jemand simplen, evtl. auch mit VBS oder commandline-tool mit Parameterübergabe?

X-Rename (VBS) ist ein schönes Script fürs Kontextmenü und Behandlung per Hand (sehr zu empfehlen), funktioniert aber nicht mit Parameterübergabe. Und um die nötigen Funktionen zu extrahieren fehlt mir die VBS-Kenntnis

Dank und Gruß,

Frankx

  1. Hallo Frankx,

    in einem Ordner Dateien namens artist-titel.jpg, artist1-titel1.jpg.

    daraus soll werden: artist-titel-klein.jpg etc.

    nun hab ich gefunden, wie einfach mit dos-batch die dateiendungen abgeschnitten werden können.

    mit der Kommandozeile von Windows XP, die mit DOS herzlich wenig zu tun hat, lässt sich Dein Problem relativ einfach lösen, es ist ein Dreizeiler.

    @echo off
    for %%I IN (%1\.jpg) do ren %%I "%%~nI-klein.tmp
    for %%I IN (%1\
    .tmp) do ren %%I "%%~nI.jpg

    Aufruf:

    pfad\zu\Skript LW:Pfad\zu\Verzeichnis

    Mit ein paar Erläuterungen sind es ein paar Zeilen mehr.

    @echo off
    REM ----------------------------------------------------------------
    REM erwarteter Übergabeparameter ist das zu bearbeitende Verzeichnis
    REM   steht in %1
    REM Durchlaufe alle Dateien mit der Endung .jpg im angegebenen Verzeichnis
    REM Hänge an den Dateinamen die Zeichenkette "-klein" und ändere die
    REM Endung in .tmp, damit die Dateien nicht erneut umbenannt werden :-)
    REM Verwende eine Endung, damit im zweiten Durchlauf nicht das gleiche
    REM Problem des Mehrfachdurchlaufes entsteht.
    for %%I IN (%1\.jpg) do ren %%I "%%~nI-klein.tmp
    REM ----------------------------------------------------------------
    REM Benenne die Endung um in .jpg
    for %%I IN (%1\
    .tmp) do ren %%I "%%~nI.jpg

    Dazu müssen die Befehlserweiterungen zur Verfügung stehen, was standardmäßig der Fall ist. Mehr zu for mit

    help for

    Freundliche Grüße

    Vinzenz

    1. Hallo Frankx,

      mit besserem Thema, besserem Themenbereich und sonst das Gleiche

      in einem Ordner Dateien namens artist-titel.jpg, artist1-titel1.jpg.
      daraus soll werden: artist-titel-klein.jpg etc.

      mit der Kommandozeile von Windows XP, die mit DOS herzlich wenig zu tun hat, lässt sich Dein Problem relativ einfach lösen, es ist ein Dreizeiler.

      @echo off
      FOR %%I IN (%1\.jpg) DO REN %%I "%%~nI-klein.tmp
      FOR %%I IN (%1\
      .tmp) DO REN %%I "%%~nI.jpg

      Aufruf:

      pfad\zu\Skript LW:Pfad\zu\Verzeichnis

      bei mir:

      D:\BATCH\umbenennen.cmd D:\Test

      Bitte beachte, dass hinter dem Verzeichnisnamen _kein_ Backslash stehen darf.

      Mit ein paar Erläuterungen sind es ein paar Zeilen mehr.

      @ECHO OFF

      REM ----------------------------------------------------------------
      REM erwarteter Übergabeparameter ist das zu bearbeitende Verzeichnis
      REM   steht in %1
      REM Durchlaufe alle Dateien mit der Endung .jpg im angegebenen Verzeichnis
      REM Hänge an den Dateinamen die Zeichenkette "-klein" und ändere die
      REM Endung in .tmp, damit die Dateien nicht erneut umbenannt werden :-)
      REM Verwende eine Endung, damit im zweiten Durchlauf nicht das gleiche
      REM Problem des Mehrfachdurchlaufes entsteht.
      FOR %%I IN (%1\*.jpg) DO REN %%I "%%~nI-klein.tmp

      REM ----------------------------------------------------------------
      REM Benenne die Endung um in .jpg
      FOR %%I IN (%1\*.tmp) DO REN %%I "%%~nI.jpg

      Dazu müssen die Befehlserweiterungen zur Verfügung stehen, was standardmäßig der Fall ist. Mehr zu for mit

      help for

      Freundliche Grüße

      Vinzenz

    2. Hallo Vinzenz,

      das ist wunderhübsch! Es heißt jetzt vinzenz.bat. Besten Dank.

      In der help for findet sich %~nI als "erzeugt nur den Dateinamen von I", Du rufst mit '"%%~nI' auf. Das doppelte % weils BatchDatei ist, und das Anführungszeichen weil...?

      Dank und Gruß,

      Frankx

      1. Hallo Frankx,

        das ist wunderhübsch! Es heißt jetzt vinzenz.bat. Besten Dank.

        das ist sehr erfreulich, insbesondere obwohl sich ein Übertragungsfehler

        [...] und das Anführungszeichen weil...?

        eingeschlichen hat und ein paar Anführungszeichen noch fehlen:

        @echo off
          REM -------------------------------------------------------------
          REM Packe die Aufrufparameter von REN in Anführungszeichen, damit
          REM das Skript auch mit Leerzeichen in Dateinamen zurechtkommt
          FOR %%I IN (%1\.jpg) DO REN "%%I" "%%~nI-klein.tmp"
          FOR %%I IN (%1\
        .tmp) DO REN "%%I" "%%~nI.jpg"

        So sollte es besser arbeiten

        Freundliche Grüße

        Vinzenz

  2. gudn tach!

    Weiß jemand simplen, evtl. auch mit VBS oder commandline-tool mit Parameterübergabe?

    wenn du perl hast und dich ein bissl mit den perl-regexp auskennst, hilft dir vielleicht ren_ext.pl

    prost
    seth