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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143385
Url: https://administrator.de/contentid/143385
Ausgedruckt am: 15.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
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