dos-batch umbennen von dateinamen geht nit
frankx
- vb-script
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
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
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
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
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
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