Unterordner mit bestimmten Namen umbenennen per batch,...
bin leider noch nicht ganz firm in Punkto Programmierung ;(
Hallöchen,
ich habe folgendes Problemchen:
Innerhalb eines Ordners sollen die Unterordner, die bspw. "A" heißen in "X", "C" in "Y" und "D" in "Z" umbenannt werden (Unterordner können auch in der x-ten Ebene vorhanden sein).
Jetzt hatte ich mir vorgestellt, bspw. eine rename.bat oder ein vbs Progrämmchen in unserem Projekteordner abzulegen, welche alle Unterordner nach dem vorher anzugebenden Namen durchsucht, also bspw. "A" und dann, wenn vorhanden umbenennt in einen ebenfalls vorher anzugebenden Namen bspw. "X". Ich hoffe das es so in etwa machbar ist. Bisher hab ich nur Beiträge gefunden, die Dateien oder Dateiendungen umbenennen oder nur den Ordner in der ersten Ebene.
Kann mir da vielleicht jemand weiterhelfen? Betrifft rund 300 Ordner und darin in Ebene x ca. 14 Ordner mit Namen A, B, C, usw.
Vielen Dank im Voraus
LG Susi
Hallöchen,
ich habe folgendes Problemchen:
Innerhalb eines Ordners sollen die Unterordner, die bspw. "A" heißen in "X", "C" in "Y" und "D" in "Z" umbenannt werden (Unterordner können auch in der x-ten Ebene vorhanden sein).
Jetzt hatte ich mir vorgestellt, bspw. eine rename.bat oder ein vbs Progrämmchen in unserem Projekteordner abzulegen, welche alle Unterordner nach dem vorher anzugebenden Namen durchsucht, also bspw. "A" und dann, wenn vorhanden umbenennt in einen ebenfalls vorher anzugebenden Namen bspw. "X". Ich hoffe das es so in etwa machbar ist. Bisher hab ich nur Beiträge gefunden, die Dateien oder Dateiendungen umbenennen oder nur den Ordner in der ersten Ebene.
Kann mir da vielleicht jemand weiterhelfen? Betrifft rund 300 Ordner und darin in Ebene x ca. 14 Ordner mit Namen A, B, C, usw.
Vielen Dank im Voraus
LG Susi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164198
Url: https://administrator.de/forum/unterordner-mit-bestimmten-namen-umbenennen-per-batch-164198.html
Ausgedruckt am: 16.05.2025 um 10:05 Uhr
15 Kommentare
Neuester Kommentar
Moin CADSusi,
willkommen im Forum.
Vielen Dank für deine durchaus brauchbare Beschreibung der Anforderung.
Die ist auch nicht so schwierig umzusetzen eigentlich, allerdings..
Allerdings muss beachtet werdet wueden, dass das übliche Vorgehen mit FOR/D bzw FOR/R im Batch (was ich als Werkzeug für diesen pilpul empfehlen würde) wahrscheinlich unelegant abgrätscht, wenn ein einer rekursiv abzuarbeitenden Verzeichnisstruktur die Parentordner plötzlich umbenannt sind.
Deshalb vorab noch die Klärung: Ist das jetzt einen einmalige Aktion, eine Sonderlocke, die jetzt nur von "A*" auf "X*", von "B*" auf "Y*" ändern soll oder ist das voraussichtlich ein wiederkehrend benötigter Ablauf, der flexibel gestaltet werden sollte?
Grüße
Biber
willkommen im Forum.
Vielen Dank für deine durchaus brauchbare Beschreibung der Anforderung.
Die ist auch nicht so schwierig umzusetzen eigentlich, allerdings..
Allerdings muss beachtet werdet wueden, dass das übliche Vorgehen mit FOR/D bzw FOR/R im Batch (was ich als Werkzeug für diesen pilpul empfehlen würde) wahrscheinlich unelegant abgrätscht, wenn ein einer rekursiv abzuarbeitenden Verzeichnisstruktur die Parentordner plötzlich umbenannt sind.
Deshalb vorab noch die Klärung: Ist das jetzt einen einmalige Aktion, eine Sonderlocke, die jetzt nur von "A*" auf "X*", von "B*" auf "Y*" ändern soll oder ist das voraussichtlich ein wiederkehrend benötigter Ablauf, der flexibel gestaltet werden sollte?
Grüße
Biber
Aloha Susi,
zusätzlich zu Bibers Frage & Anmerkung würde es, so denke ich, auch wichtig sein, zu erfahren, ob der gesuchte Name auch als Teilname in einem anderen Ordner vorkommen kann (z.B. X existiert separat aber es gibt auch XB) oder sogar exakt mit diesem Namen in einem anderen Verzeichnis (wovon ich nicht ausgehe)?
greetz André
zusätzlich zu Bibers Frage & Anmerkung würde es, so denke ich, auch wichtig sein, zu erfahren, ob der gesuchte Name auch als Teilname in einem anderen Ordner vorkommen kann (z.B. X existiert separat aber es gibt auch XB) oder sogar exakt mit diesem Namen in einem anderen Verzeichnis (wovon ich nicht ausgehe)?
greetz André
@Biber
Grüße
bastla
wenn in einer rekursiv abzuarbeitenden Verzeichnisstruktur die Parentordner plötzlich umbenannt sind.
So aus dem Handgelenk (komme gerade leider nicht dazu): Ein "dir /s /b /ad|sort /r
" sollte doch das Ganze vom Ende her aufdröseln (oder doch gleich VBS, wo sich die Rekursion besser steuern lässt) ...Grüße
bastla

salü,
ist das Ziel wirklich die Ordner umzubenennen?
Oder eher doch - wenn der "neue"Ordner bereits existiert den Inhalt in den vorhandenen Ordner zu schieben und den "alten" Ornder zu löschen?
Das ist ein kleiner aber feiner unterschied. - wie der untere Abschnitt zeigt...
Gruß
ist das Ziel wirklich die Ordner umzubenennen?
Oder eher doch - wenn der "neue"Ordner bereits existiert den Inhalt in den vorhandenen Ordner zu schieben und den "alten" Ornder zu löschen?
Das ist ein kleiner aber feiner unterschied. - wie der untere Abschnitt zeigt...
N:\testing>md 12
N:\testing>md 123
N:\testing>tree
Auflistung der Ordnerpfade für Volume X
Volumenummer: 0815
N:.
├───12
└───123
N:\testing>
N:\testing>echo 12>12\12.ini
N:\testing>echo 123>123\123.ini
N:\testing>move 12 123
N:\testing>tree
Auflistung der Ordnerpfade für Volume X
Volumenummer: 0815
N:.
└───123
└───12
N:\testing>
Gruß
Moin CADSusi,
ich bin auch immer noch nicht sicher, ob ich die Verzeichnisstruktur jetzt richtig interpretiere.
[Edit] Das habe ich geschrieben, bevor ich CADSusis Kommentar über mir gelesen hatte. Hat sich überschnitten.[Edit]
in meiner Vorstellung sieht das so aus (mein "Rootverzeichnis" ist D:\temp, darunter ein Ordner 2010 mit dieser Unterstruktur)
Ich sehe nach deiner Beschreibung nur 2 Fälle:
-Entweder ein umzubenennendes "A","B" oder "C" in einer Zwischenebene unterhalb 2010, aber mit Unterverzeichnissen
- oder am Ende einer Verzeichnisstruktur (ohne Unterordner)
Die beiden Fälle würde ich auch separat abhandeln.
Am Ende eines Pfades:
Bei einer einmaligen Aktion würde ich das auch über CMD-Prompt abfackel, bevor ich da noch weitere kunstvolle FOR-Anweisungen drumwickele.
Sind erst die End-Verzeichnisse umbenannt, dann kommen die Zwischenebenen dran.
...also eigentlich ganz schmerzfrei.
Batches oder Skripte schreibe ich eigentlich nur, wenn ich sie auch mehrfach verwenden kann.
Für einfache "kannste-ma'-eben"-Anforderungen sollte der CMD-Prompt ausreichen.
Grüße
Biber
ich bin auch immer noch nicht sicher, ob ich die Verzeichnisstruktur jetzt richtig interpretiere.
[Edit] Das habe ich geschrieben, bevor ich CADSusis Kommentar über mir gelesen hatte. Hat sich überschnitten.[Edit]
in meiner Vorstellung sieht das so aus (mein "Rootverzeichnis" ist D:\temp, darunter ein Ordner 2010 mit dieser Unterstruktur)
(=13:34:46 D:\temp=)
>dir /s /b /ad 2010
D:\temp\2010\A
D:\temp\2010\B
D:\temp\2010\A\whatever
D:\temp\2010\A\whatever\A
D:\temp\2010\A\whatever\B
D:\temp\2010\B\andere
D:\temp\2010\B\other
D:\temp\2010\B\andere\B
D:\temp\2010\B\other\A
D:\temp\2010\B\other\B
D:\temp\2010\B\other\C
--oder, wie bastla sortieren würde:
>dir /s /b /ad 2010|sort /r"
D:\temp\2010\B\other\C
D:\temp\2010\B\other\B
D:\temp\2010\B\other\A
D:\temp\2010\B\other
D:\temp\2010\B\andere\B
D:\temp\2010\B\andere
D:\temp\2010\B
D:\temp\2010\A\whatever\B
D:\temp\2010\A\whatever\A
D:\temp\2010\A\whatever
D:\temp\2010\A
Ich sehe nach deiner Beschreibung nur 2 Fälle:
-Entweder ein umzubenennendes "A","B" oder "C" in einer Zwischenebene unterhalb 2010, aber mit Unterverzeichnissen
- oder am Ende einer Verzeichnisstruktur (ohne Unterordner)
Die beiden Fälle würde ich auch separat abhandeln.
Am Ende eines Pfades:
>for /F %i in ('dir /ad /b /s 2010\A' ) do @if "%~ni"=="A" @echo ren "%i" X
ren "D:\temp\2010\A\whatever\A" X
(=13:42:50 D:\temp=)
>for /F %i in ('dir /ad /b /s 2010\B' ) do @if "%~ni"=="B" @echo ren "%i" Y
ren "D:\temp\2010\B\andere\B" Y
ren "D:\temp\2010\B\other\B" Y
(=13:43:05 D:\temp=)
>for /F %i in ('dir /ad /b /s 2010\C' ) do @if "%~ni"=="C" @echo ren "%i" Z
ren "D:\temp\2010\B\other\C" Z
Bei einer einmaligen Aktion würde ich das auch über CMD-Prompt abfackel, bevor ich da noch weitere kunstvolle FOR-Anweisungen drumwickele.
Sind erst die End-Verzeichnisse umbenannt, dann kommen die Zwischenebenen dran.
>for /r /d %i in (2010\* ) do @if /i "%~ni"=="A" @echo ren "%i" X
ren "D:\temp\2010\A" X
(=13:45:15 D:\temp=)
>for /r /d %i in (2010\* ) do @if /i "%~ni"=="B" @echo ren "%i" Y
ren "D:\temp\2010\B" Y
...
...also eigentlich ganz schmerzfrei.
Batches oder Skripte schreibe ich eigentlich nur, wenn ich sie auch mehrfach verwenden kann.
Für einfache "kannste-ma'-eben"-Anforderungen sollte der CMD-Prompt ausreichen.
Grüße
Biber
Hallo @all!
Dachte mir schon, dass da nicht mehr viel zu tun bleibt ...
... aber, um den Gedanken von oben zu Ende zu bringen:
Durch die absteigende Sortierung werden die längeren Pfade zuerst behandelt, womit das "Sich-selbst-den-Boden-unter-den-Füßen-Wegziehen" vermieden werden sollte.
Grüße
bastla
Dachte mir schon, dass da nicht mehr viel zu tun bleibt ...
... aber, um den Gedanken von oben zu Ende zu bringen:
>for /f "delims=" %i in ('dir /s /b /ad D:\temp\A^|sort /r') do @echo ren "%i" X
Grüße
bastla
@bastla
Grüße
Biber
Zitat von @bastla:
... aber, um den Gedanken von oben zu Ende zu bringen:
Durch die absteigende Sortierung werden die längeren Pfade zuerst behandelt, womit das
"Sich-selbst-den-Boden-unter-den-Füßen-Wegziehen" vermieden werden sollte.
Hast du meinen POC zu dem Thema "SORT" im meinem Kommentar gesehen?... aber, um den Gedanken von oben zu Ende zu bringen:
>for /f "delims=" %i in ('dir /s /b /ad D:\temp\A^|sort /r') do @echo ren "%i" X
>
"Sich-selbst-den-Boden-unter-den-Füßen-Wegziehen" vermieden werden sollte.
Grüße
Biber
@Biber
Schönes Wochenende
bastla
Hast du meinen POC zu dem Thema "SORT" im meinem Kommentar gesehen?
Das ja - wollte nur hinsichtlich der Umsetzung komplettieren ...Schönes Wochenende
bastla