Ordnernamen kürzen
Hallo,
ich möchte gerne Ordner per Batch um 12 Zeichen am Anfang kürzen.
Beispiel:
Backup_neu__22.05.2010_Fotos
wird zu
22.05.2010_Fotos
Die Ordnernamen sind dabei keine Konstante, sie ändern sich mit der Zeit.
Kann mir jemand sagen, wie das geht?
Achja, eine Überprüfung, ob der Ordner schon vorhanden ist, wird dabei nicht benötigt.
Grüße
ich möchte gerne Ordner per Batch um 12 Zeichen am Anfang kürzen.
Beispiel:
Backup_neu__22.05.2010_Fotos
wird zu
22.05.2010_Fotos
Die Ordnernamen sind dabei keine Konstante, sie ändern sich mit der Zeit.
Kann mir jemand sagen, wie das geht?
Achja, eine Überprüfung, ob der Ordner schon vorhanden ist, wird dabei nicht benötigt.
Grüße
Please also mark the comments that contributed to the solution of the article
Content-Key: 143385
Url: https://administrator.de/contentid/143385
Printed on: April 26, 2024 at 14:04 o'clock
4 Comments
Latest comment
Hallo Knochen und willkommen im Forum!
Dein Beispiel ließe auch eine andere Vorgangsweise (als genau 12 Zeichen abzuschneiden) zu, nämlich das Trennen anhand der "_" und Übernehmen des neuen Namens erst ab dem dritten daraus entstehenden Teil:
Dieser Einzeiler ist zum Testen direkt in der CMD-Shell gedacht und simuliert (wegen des "
Um aber tatsächlich die ersten 12 Zeichen abzuschneiden (was für mich allerdings im Zweifelsfall nur zweite Wahl wäre), könntest Du folgenden Batch verwenden (ebenfalls wegen des "
Die Vorgabe des Namensschemas "*_*__*" in beiden Varianten soll es ermöglichen, den Vorgang mehrmals ausführen zu können, ohne bereits geänderte Namen nochmals zu kürzen.
Grüße
bastla
Dein Beispiel ließe auch eine andere Vorgangsweise (als genau 12 Zeichen abzuschneiden) zu, nämlich das Trennen anhand der "_" und Übernehmen des neuen Namens erst ab dem dritten daraus entstehenden Teil:
for /d %i in ("D:\Dein Backup-Ordner\*_*__*") do @for /f "tokens=2* delims=_" %a in ("%~nxi") do @echo ren "%i" "%b"
echo
") das Umbenennen nur durch Ausgabe des entsprechenden Befehles (wenn Du das "echo
" entfernst, werden die Namen tatsächlich geändert); falls Du einen Batch daraus machen willst, einfach jedes enthaltene Prozentzeichen verdoppeln.Um aber tatsächlich die ersten 12 Zeichen abzuschneiden (was für mich allerdings im Zweifelsfall nur zweite Wahl wäre), könntest Du folgenden Batch verwenden (ebenfalls wegen des "
echo
" vor dem "ren
" noch als Simulation):@echo off & setlocal
set "Basis="D:\Dein Backup-Ordner"
set "Maske=*_*__*"
pushd "%Basis%"
for /d %%i in ("%Maske%") do set "Name=%%~nxi" & call :ProcessDir "%%i"
popd
goto :eof
:ProcessDir
echo ren %1 "%Name:~12%"
goto :eof
Die Vorgabe des Namensschemas "*_*__*" in beiden Varianten soll es ermöglichen, den Vorgang mehrmals ausführen zu können, ohne bereits geänderte Namen nochmals zu kürzen.
Grüße
bastla
Hallo Knochen!
"_-_" kann nicht als Trennzeichen verwendet werden (da "
Grüße
bastla
"_-_" kann nicht als Trennzeichen verwendet werden (da "
for /f
" nur einzelne Zeichen als Delimiter verarbeitet) - wenn allerdings immer nach dem ersten "-" getrennt werden soll, dann etwa so:for /d %i in ("D:\Dein Backup-Ordner\*_-_*") do @for /f "tokens=1* delims=-" %a in ("%~nxi") do @for /f "tokens=* delims=_" %p in ("%b") do @echo ren "%i" "%p"
bastla