Umbenennen von Verzeichnissen / Unterverzeichnissen
Moderators: Hacker, Stefan2, white
Umbenennen von Verzeichnissen / Unterverzeichnissen
Hallo
Leider habe ich nichts im Forum gefunden das mir weiterhelft.
Ich habe folgende Aufgabe:
Auf einem Laufwerk sind ganz viele Verzeichnisse mit Unterverzeichnissen. Es dürfen aber keine 2 Verzeichnisse den gleichen Namen haben.
Gibt es eine Möglichkeit Doppelte Verzeichnisse zu finden oder alle Verzeichnisse umzubenennen mit einem Zähler angehängt.
Folgendes habe ich schon versucht. Suche nach *. -> Anwenden. Dann habe ich die Liste aller Verzeichnisse und Unterverzeichnisse. Alle Markieren und mit dem Mehrfach Umbenenn Toll einen Zähler anhängen.
Geht aber nicht.....
Besten Dank für Tipps.
MfG
Stephan
Leider habe ich nichts im Forum gefunden das mir weiterhelft.
Ich habe folgende Aufgabe:
Auf einem Laufwerk sind ganz viele Verzeichnisse mit Unterverzeichnissen. Es dürfen aber keine 2 Verzeichnisse den gleichen Namen haben.
Gibt es eine Möglichkeit Doppelte Verzeichnisse zu finden oder alle Verzeichnisse umzubenennen mit einem Zähler angehängt.
Folgendes habe ich schon versucht. Suche nach *. -> Anwenden. Dann habe ich die Liste aller Verzeichnisse und Unterverzeichnisse. Alle Markieren und mit dem Mehrfach Umbenenn Toll einen Zähler anhängen.
Geht aber nicht.....
Besten Dank für Tipps.
MfG
Stephan
- SanskritFritz
- Power Member
- Posts: 3693
- Joined: 2003-07-24, 09:25 UTC
- Location: Budapest, Hungary
Bei mir geht es nur EINE Verzeichnissebe tief (W2k pro, TC6.53). Also Unter-unter-verzeichnisse werden nicht umbennant. Scheint mir auch (halb-)logisch zu sein, das "Ober"verzeichnis wurde ja umbenannt, also ist der Pfad zum Unterverzeichniss ein anderer geworden.
@SanskritFritz: geht es wirklich auch mit 3-Verzeichnissebenen?
@SanskritFritz: geht es wirklich auch mit 3-Verzeichnissebenen?
- SanskritFritz
- Power Member
- Posts: 3693
- Joined: 2003-07-24, 09:25 UTC
- Location: Budapest, Hungary
Jetzt habe ich eine kleine Batchdatei geschrieben:
Diese Datei ist unter dem Namen c:\folder.bat abzuspeichern. Dies ist wichtig, da sie sich selbst wieder aufruft.
Dann sollte die Umgebungsvariable %p% auf 0 gesetzt werden, denn dies ist der Zähler, der an die Ordnernamen rangehängt wird. Das macht man mit dem Befehl:
Dies kann man auch in einer zweiten Batchdatei erledigen, die dann in der zweiten Zeile c:\folder.bat aufruft.
Hier nun c:\folder.bat:
Die Batch funktioniert folgendermaßen:
set /a p=p+1 addiert jeweils 1 zum Zähler hinzu
for /D %%a in (*) führt die folgenden Befehle fü jedes Unterverzeichnis durch
do (cd "%%~fa" wechselt in das Verzeichnis
call c:\folder.bat ruft die Bacth nochmal auf, damit rekursiv in jedes Verzeichnis gewechselt wird, bis kein Unterverzeichnis mehr gefunden wird
cd .. Nun wird eine Ebene höher gewechselt, da man ein Verzeichnis nicht umbenennen kann, in dem man sich gerade befindet.
echo ren "%%~fa" "%%a(%p%)" >> c:\umebnenn.txt
Schreibt den Befehl ren "Verzeichnisname" "Verzeichnisname(p)" in eine Textdatei mit Namen c:\Umbenenn.txt.
Jetzt erhält man in C:\Umbenenn.txt eigentlich eine Batchdatei, die alle Verzeichnisse umbenennt, so dass keines den gleichen Namen haben kann, da in jedem Verzeichnis der Zähler geändert wird und in einem Verzeichnis nicht mehrere Verzeichnisse den selben Namen tragen können.
Nun kann man sich noch mal ansehen, ob alles richtig gelaufen ist (wurde die Batch vom richtigen Verzeichnis gestartet? usw). Wenn alles stimmt, dann muss man einfach nur die Endung von TXT nach BAT verändern und kann die Batch per Doppelklick starten.
Zu Beachten ist noch, dass diese Textdatei recht groß werden kann, und dass es - je nach Plattengröße - einige Minuten dauern kann, bis die Datei erstellt und auch bis die Dateien dann umbenannt sind.
38691 Verzeichnisse haben bei mir eine Datei von 1.363.968 Bytes erzeugt.
Am besten macht man vorher erst ein paar Tests, um zu sehen ob's wie gewümscht funktioniert.
Hoffe das hilft
sheepdog
Diese Datei ist unter dem Namen c:\folder.bat abzuspeichern. Dies ist wichtig, da sie sich selbst wieder aufruft.
Dann sollte die Umgebungsvariable %p% auf 0 gesetzt werden, denn dies ist der Zähler, der an die Ordnernamen rangehängt wird. Das macht man mit dem Befehl:
Code: Select all
set /a p=0
Hier nun c:\folder.bat:
Code: Select all
set /a p=p+1
for /D %%a in (*) do (cd "%%~fa"
call c:\folder.bat
cd ..
echo ren "%%~fa" "%%a(%p%)" >> c:\umbenenn.txt
)
set /a p=p+1 addiert jeweils 1 zum Zähler hinzu
for /D %%a in (*) führt die folgenden Befehle fü jedes Unterverzeichnis durch
do (cd "%%~fa" wechselt in das Verzeichnis
call c:\folder.bat ruft die Bacth nochmal auf, damit rekursiv in jedes Verzeichnis gewechselt wird, bis kein Unterverzeichnis mehr gefunden wird
cd .. Nun wird eine Ebene höher gewechselt, da man ein Verzeichnis nicht umbenennen kann, in dem man sich gerade befindet.
echo ren "%%~fa" "%%a(%p%)" >> c:\umebnenn.txt
Schreibt den Befehl ren "Verzeichnisname" "Verzeichnisname(p)" in eine Textdatei mit Namen c:\Umbenenn.txt.
Jetzt erhält man in C:\Umbenenn.txt eigentlich eine Batchdatei, die alle Verzeichnisse umbenennt, so dass keines den gleichen Namen haben kann, da in jedem Verzeichnis der Zähler geändert wird und in einem Verzeichnis nicht mehrere Verzeichnisse den selben Namen tragen können.
Nun kann man sich noch mal ansehen, ob alles richtig gelaufen ist (wurde die Batch vom richtigen Verzeichnis gestartet? usw). Wenn alles stimmt, dann muss man einfach nur die Endung von TXT nach BAT verändern und kann die Batch per Doppelklick starten.
Zu Beachten ist noch, dass diese Textdatei recht groß werden kann, und dass es - je nach Plattengröße - einige Minuten dauern kann, bis die Datei erstellt und auch bis die Dateien dann umbenannt sind.
38691 Verzeichnisse haben bei mir eine Datei von 1.363.968 Bytes erzeugt.
Am besten macht man vorher erst ein paar Tests, um zu sehen ob's wie gewümscht funktioniert.
Hoffe das hilft
sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams