Batch - Dateien umbennen
Ich bin am verzweifeln, habe jetzt schon viel ausprobiert, bin aber noch nicht weit gekommen. Ich hoffe, es kann mir jemand helfen.
Besten Dank
docluma
Hallo,
ich habe folgende Verzeichnisstruktur
R:\_ToRename\
R:\_ToRename\20110522\1\
R:\_ToRename\20110523\1\
R:\_ToRename\20110524\1\
usw.
In diesen Verzeichnissen befinden sich die Dateien, die ich per batch-Datei umbennen möchte.
Die Dateien haben folgendes Format:
zB 00606E909A1D_m20110523232230.jpg
Nun möchte nun den Teil nach dem "m" behalten, da dieses das Datum mit Uhrzeit ist. Vor dem Zeitstring noch "cam1_" davor, den Teil mit der Zeit der Lesbarkeit wegen mit Unterstrichen unterteilen, und ans Ende (vorm Suffix) "_2" dranhängen.
Die Datei soll nach dem Umbennen wie folgt heissen:
cam1_20110523_232230_2.jpg
Die Batch-Datei befindet sich in R:\ToRename\
Folgendes habe ich erstes gemacht:
@echo off
set Quelle="R:\_ToRename"
Set DateiFilter="*.jpg"
for /r %Quelle% %%i in (%DateiFilter%) do rename %%i %%~ni_Test.jpg
end
Das funktioniert schon mal. Nun habe ich aber Probleme, den Dateinamen auseinander zu nehmen. Versucht habe ich verschiedenes mit Variablenzuweisung der Teile des Dateinames mit Part1=%%i:~15,8 und Part2=%%i:~23,6. Danach dann NewName=cam1_%Part1%_%Part2%_2.jpg
rename %%i=%NewName%.jpg
Versuche habe ich auch mit For /f "tokens= und delims probiert, aber da blicke ich garnicht durch.
Ich hoffe, ich habe mein Anliegen verständlich erklärt, und es kann mir jemand helfen.
Besten Dank schon mal
docluma
Besten Dank
docluma
Hallo,
ich habe folgende Verzeichnisstruktur
R:\_ToRename\
R:\_ToRename\20110522\1\
R:\_ToRename\20110523\1\
R:\_ToRename\20110524\1\
usw.
In diesen Verzeichnissen befinden sich die Dateien, die ich per batch-Datei umbennen möchte.
Die Dateien haben folgendes Format:
zB 00606E909A1D_m20110523232230.jpg
Nun möchte nun den Teil nach dem "m" behalten, da dieses das Datum mit Uhrzeit ist. Vor dem Zeitstring noch "cam1_" davor, den Teil mit der Zeit der Lesbarkeit wegen mit Unterstrichen unterteilen, und ans Ende (vorm Suffix) "_2" dranhängen.
Die Datei soll nach dem Umbennen wie folgt heissen:
cam1_20110523_232230_2.jpg
Die Batch-Datei befindet sich in R:\ToRename\
Folgendes habe ich erstes gemacht:
@echo off
set Quelle="R:\_ToRename"
Set DateiFilter="*.jpg"
for /r %Quelle% %%i in (%DateiFilter%) do rename %%i %%~ni_Test.jpg
end
Das funktioniert schon mal. Nun habe ich aber Probleme, den Dateinamen auseinander zu nehmen. Versucht habe ich verschiedenes mit Variablenzuweisung der Teile des Dateinames mit Part1=%%i:~15,8 und Part2=%%i:~23,6. Danach dann NewName=cam1_%Part1%_%Part2%_2.jpg
rename %%i=%NewName%.jpg
Versuche habe ich auch mit For /f "tokens= und delims probiert, aber da blicke ich garnicht durch.
Ich hoffe, ich habe mein Anliegen verständlich erklärt, und es kann mir jemand helfen.
Besten Dank schon mal
docluma
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 24.05.2011 um 21:42:33 Uhr
Batch - Dateien umbennen
...In diesen Verzeichnissen befinden sich die Dateien, die ich per batch-Datei umbennen möchte.
...In diesen Verzeichnissen befinden sich die Dateien, die ich per batch-Datei umbennen möchte.
Die Datei soll nach dem Umbennen wie folgt heissen
Set /a rgc+=3#760
Falls noch jemand da draussen ein Forschungsthema für einen ehrlich erworbenen Doktortitel sucht...
...Das Phänomen mit den unschreibbaren Worten mit mehreren "e"s und "n" auf kleiner Fläche sollte mal wissenschaftlich eruiert werden.
Vielleicht hiess auch Konrad Duden eigentlich Konrad Dudenen.... war damit aber chancenlos...
Content-ID: 166843
Url: https://administrator.de/forum/batch-dateien-umbennen-166843.html
Ausgedruckt am: 20.05.2025 um 15:05 Uhr
7 Kommentare
Neuester Kommentar
Hallo docluma und willkommen im Forum!
Der Ansatz ist ja schon nicht ganz übel
- Du musst nur berücksichtigen, dass von Schleifenvariablen keine Teilstrings gebildet werden können (und dass die Zählung des Offsets bei 0 beginnt) - daher zB (ungetestet):
Das "
- da Du aber dann trotzdem nochmals anhand der Zeichenzahl unterteilen willst, bietet es sich (wie oben) an, gleich alles per Stringzerlegung abzuhandeln ...
Grüße
bastla
[Edit] In Zeile 5 fehlendes "
Der Ansatz ist ja schon nicht ganz übel
@echo off & setlocal
set "Quelle=R:\_ToRename"
set "DateiFilter=*.jpg"
for /r "%Quelle%" %%i in (%DateiFilter%) do set "Name=%%~ni" & call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Part1=%Name:~14,8%"
set "Part2=%Name:~22,6%"
echo ren %1 "cam1_%Part1%_%Part2%_2%~x1"
goto :eof
echo
" vor dem "ren
" soll dem gefahrlosen Testen dienen - wenn's gut aussieht, einfach ersatzlos streichen ... Versuche habe ich auch mit For /f "tokens= und delims probiert, aber da blicke ich garnicht durch.
Wenn Du nur den Teil nach dem "m" extrahieren müsstest und es kein weiteres "m" geben kann, einfach:for /f "tokens=2 delims=m" %%a in ("%%~ni") do @echo %%a
Grüße
bastla
[Edit] In Zeile 5 fehlendes "
goto :eof
" zum Beenden des Hauptprogrammes nachgetragen /Edit]
Hallo docluma!
Was meinst Du mit "Ordner verschieben" - bisher ging es doch um Dateien?
Grüße
bastla
P.S.: Gut, dass Du mich daran erinnert hast - oben fehlt(e - habe es jetzt ergänzt
) noch ein "
Was meinst Du mit "Ordner verschieben" - bisher ging es doch um Dateien?
Grüße
bastla
P.S.: Gut, dass Du mich daran erinnert hast - oben fehlt(e - habe es jetzt ergänzt
goto :eof
" - dessen Bedeutung ist übrigens immer "Beenden des Batches", wobei dies allerdings im Fall des in der letzten Zeile Stehenden eigentlich "Rücksprung in das Hauptprogramm" bedeutet ...
Hallo docluma!
Grüße
bastla
Aber wo platziere ich dann den copy-Befehl?
Da das, so interpretiere ich es mal, die letzte Aktion ist, die Dein Batch ausführen soll, genau vor die erwähnte Zeile 5 - diese beendet ja das Hauptprogramm (damit nicht nochmals das Unterprogramm ":ProcessFile
" ausgeführt wird) ...Grüße
bastla