Verzeichnisse und deren Unterverzeichnisse logisch umbenennen
In der Firma führen wir eine neue für alle im Netzwerk zugängliche Ordnerstruktur ein (ja, sowas gibts noch).
Dazu müssen (Unter-) Verzeichnisse umbenannt werden.
Es existiert schon ein weitreichend nach unten verzweigter leerer Explorer-Baum.
Diese Ordner werden erst nach und nach mit Dateien/Dokumenten gefüllt.
Schlau wie ich bin, habe ich vor die jeweiligen Verzeichnisnamen Zahlen gesetzt, damit die Verzeichnisse nicht nach ABC sondern nach den Zahlen sortiert werden.
Leider habe ich diese nur zweistellig angelegt und benötige diese jetzt dreistellig.
Also Beispiel:
Vorhanden: 01-Verzeichnisname
02-Verzeichnisname
.....
09-Verzeichnisname
10-Verzeichnisname
usw.
Ersten beiden Ziffern sollen mit 10 multipliziert werden.
Also wird daraus:
010-Verzeichnisname
020-Verzeichnisname
.....
090-Verzeichnisname
100-Verzeichnisname
usw.
Die Logik ist immer die gleiche: zwei Ziffern - Gedankenstrich - Verzeichnisname (jeweils ohne Leerzeichen dazwischen s.o.)
Die Umbenamsungen sollen für alle Verzeichnisse und deren Unterverzeichnisse gemacht werden.
Kann mir da jemand kurzfristig weiterhelfen?
Bitte beachten, dass ich nur ein (kleiner) Buchhalter bin, dem die EDV "ans Bein gebunden" wurde!!!
Also setzt nicht allzuviel voraus.....
HERZLICHEN DANK IM VORAUS!!!!!!!!!!
Dazu müssen (Unter-) Verzeichnisse umbenannt werden.
Es existiert schon ein weitreichend nach unten verzweigter leerer Explorer-Baum.
Diese Ordner werden erst nach und nach mit Dateien/Dokumenten gefüllt.
Schlau wie ich bin, habe ich vor die jeweiligen Verzeichnisnamen Zahlen gesetzt, damit die Verzeichnisse nicht nach ABC sondern nach den Zahlen sortiert werden.
Leider habe ich diese nur zweistellig angelegt und benötige diese jetzt dreistellig.
Also Beispiel:
Vorhanden: 01-Verzeichnisname
02-Verzeichnisname
.....
09-Verzeichnisname
10-Verzeichnisname
usw.
Ersten beiden Ziffern sollen mit 10 multipliziert werden.
Also wird daraus:
010-Verzeichnisname
020-Verzeichnisname
.....
090-Verzeichnisname
100-Verzeichnisname
usw.
Die Logik ist immer die gleiche: zwei Ziffern - Gedankenstrich - Verzeichnisname (jeweils ohne Leerzeichen dazwischen s.o.)
Die Umbenamsungen sollen für alle Verzeichnisse und deren Unterverzeichnisse gemacht werden.
Kann mir da jemand kurzfristig weiterhelfen?
Bitte beachten, dass ich nur ein (kleiner) Buchhalter bin, dem die EDV "ans Bein gebunden" wurde!!!
Also setzt nicht allzuviel voraus.....
HERZLICHEN DANK IM VORAUS!!!!!!!!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 16.05.2010 um 13:38:46 Uhr
Verschoben von "Windows"->"Netzwerk" nach "Batch & Shell".
Content-ID: 142877
Url: https://administrator.de/contentid/142877
Ausgedruckt am: 15.11.2024 um 21:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo herminator1 und herzlich willkommen im Forum!
hier der Code:
Alles, was Du zu ändern hast, ist die letzte Zeile - dort gehört der Überordner Deiner Verzeichnisse hinein.
ACHTUNG: zuerst würde ich das ganze mit der kopierten Ordnerstruktur testen, falls das Ergebnis doch nicht Deinen Wünschen entspricht...
btw: Falls Dir wieder mal eine Stelle zuwenig ist: bei erneuter Ausführung wird einfach noch eine 0 vor jeden Ordnernamen gehängt.
Hoffe, geholfen zu haben!
Wir Buchhalter müssen einfach zusammenhalten (bzw. ich als Buchhaltungslehrer mit Dir als Buchhalter
lg
Edi
PS: wenn bei Dir folgende Rechnung Sinn gibt, dann wundert mich meine Steuerabrechnung nicht mehr
hier der Code:
Set objFSO = CreateObject("Scripting.FileSystemObject")
function ordner(pfad)
Set objFolder = objFSO.GetFolder(pfad)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders
on Error resume next
vollername = objFSO.GetAbsolutePathName(objSubfolder)
ordnername = right(vollername, (len(vollername) - instrRev(vollername,"\")))
pfad = left(vollername, instrRev(vollername,"\"))
ordnerneu = pfad & "0" & ordnername
objFSO.MoveFolder pfad & ordnername , ordnerneu
call ordner(ordnerneu)
Next
end function
call ordner("C:\test")
Alles, was Du zu ändern hast, ist die letzte Zeile - dort gehört der Überordner Deiner Verzeichnisse hinein.
ACHTUNG: zuerst würde ich das ganze mit der kopierten Ordnerstruktur testen, falls das Ergebnis doch nicht Deinen Wünschen entspricht...
btw: Falls Dir wieder mal eine Stelle zuwenig ist: bei erneuter Ausführung wird einfach noch eine 0 vor jeden Ordnernamen gehängt.
Hoffe, geholfen zu haben!
Wir Buchhalter müssen einfach zusammenhalten (bzw. ich als Buchhaltungslehrer mit Dir als Buchhalter
lg
Edi
PS: wenn bei Dir folgende Rechnung Sinn gibt, dann wundert mich meine Steuerabrechnung nicht mehr
die Ersten beiden Ziffern sollen mit 10 multipliziert werden. Daraus wird dann 010
Hallo Herminator1,
willkommen im Forum, leider fehlt mir in deinem Beitrag eine Begrüßung.
Das könnte so gehen (ungestestet)
Als Batchdatei speichern und in dem Verzeichnis starten ab dem abwärts umbenannt werden soll.
Wenn die Ausgabe auf dem Bildschirm richtig erscheint, das Echo in der letzten Zeile entfernen.
Gruß
LotPings
Edit falsche Tilde entfernt.
willkommen im Forum, leider fehlt mir in deinem Beitrag eine Begrüßung.
Das könnte so gehen (ungestestet)
@Echo off
For /f "Delims=" %%A in ('Dir /B/S/AD ??-* ^| Sort /R ') Do Set "Name=%%~nxA"&Call :Check "%%A"
Goto :Eof
:Check
:: Prüfe of 2 Ziffern Minus am Anfang, wenn nicht nächster
Echo.%Name%|Findstr "^[0-9][0-9]-" >NUL 2>&1 ||Goto :Eof
Echo Ren %1 "%Name:~0,2%0%Name:~2%"
Wenn die Ausgabe auf dem Bildschirm richtig erscheint, das Echo in der letzten Zeile entfernen.
Gruß
LotPings
Edit falsche Tilde entfernt.
Zitat von @Edi.Pfisterer:
PS: wenn bei Dir folgende Rechnung Sinn gibt, dann wundert mich meine Steuerabrechnung nicht mehr
> die Ersten beiden Ziffern sollen mit 10 multipliziert werden. Daraus wird dann 010
Hallo Edi,PS: wenn bei Dir folgende Rechnung Sinn gibt, dann wundert mich meine Steuerabrechnung nicht mehr
> die Ersten beiden Ziffern sollen mit 10 multipliziert werden. Daraus wird dann 010
für mich ergibt das schon Sinn, ich nehme mal an auch für das FA
Bis auf das Problem verschwindender führener Nullen beim Multiplizieren sehe ich da kein Hindernis.
Er wollte die zusätzliche Null ja hinter den 2 Stellen nicht davor.
Gruß
LotPings
Hallo!
Sorry, ich hab die Anforderung falsch verstanden... (oder nur beinahe richtig
Der erste Ansatz hat eine 0 VOR jeden Ordnernamen gestellt, dh aus 01 wurde 001.
also, hier nun der entsprechende vbs-code (falls LotPings Vorschlag entgegen jeder Annahme nicht funktionieren sollte).
Einfach als ordner.vbs speichern, letzte Zeile entsprechend verändern und durch Doppelklick starten (natürlich zuerst eine Sicherung des aktuellen Stands durchführen. Ich garantiere für Nichts ):
lg
Edi
Sorry, ich hab die Anforderung falsch verstanden... (oder nur beinahe richtig
Der erste Ansatz hat eine 0 VOR jeden Ordnernamen gestellt, dh aus 01 wurde 001.
also, hier nun der entsprechende vbs-code (falls LotPings Vorschlag entgegen jeder Annahme nicht funktionieren sollte).
Einfach als ordner.vbs speichern, letzte Zeile entsprechend verändern und durch Doppelklick starten (natürlich zuerst eine Sicherung des aktuellen Stands durchführen. Ich garantiere für Nichts ):
Set objFSO = CreateObject("Scripting.FileSystemObject")
function ordner(pfad)
Set objFolder = objFSO.GetFolder(pfad)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders
on Error resume next
vollername = objFSO.GetAbsolutePathName(objSubfolder)
ordnername = right(vollername, (len(vollername) - instrRev(vollername,"\"))-2)
pfad = left(vollername, instrRev(vollername,"\")+2)
ordnerneu = pfad & "0" & ordnername
objFSO.MoveFolder pfad & ordnername , ordnerneu
call ordner(ordnerneu)
Next
end function
call ordner("C:\test")
lg
Edi
Moin,
sorry mein Fehler. Die Tilde vor Name ist da versehentlich reingerutscht.
Ich ändere den Code oben ab,
versuche es dann noch einmal.
Gruß
LotPings
PS: Edi's zweiter Code funktionierte hier einwandfrei.
sorry mein Fehler. Die Tilde vor Name ist da versehentlich reingerutscht.
Ich ändere den Code oben ab,
versuche es dann noch einmal.
Gruß
LotPings
PS: Edi's zweiter Code funktionierte hier einwandfrei.
Danke fürs Feedback, wenn du den Beitrag jetzt noch auf Erledigt setzt, wäre das prina.
Ich hoffe, dich hat's nicht zu viel zeit gekostet.......
Nö, eine leichte Fingerübung und dabei passieren dann schon mal Flüchtigkeitsfehler Einen schönen Sonntag noch.
Gruß
LotPings
Hallo herminator1!
Schade, dass der Code bei Dir nicht funktioniert, ich habe ihn soeben getestet und bei mir hat er tadellos das getan, was ich mir erwartete...
als Ursachen fürs Versagen fallen mir spontan 2 Gründe ein:
1.) der Ordner c:\test hat keine Unterordner (die 0 wird nur in den Unterordnern von c:\test ergänzt)
2.) Du hast Vista und diese Benutzerkontensteuerung aktiviert (das erkennst Du daran, dass bei Auswahl der Systemsteuerung o. ä. immer dieses Fenster aufpoppt, ob Du jetzt da wirklich was herummurksen willst . In einigen Fällen führt dies dazu, dass vbs-Dateien nicht ausgeführt werden...
Vielleicht hättest du ja noch ein bissl Zeit und könntest mir - quasi als Gegenleistung für meinen Hilfeversuch - folgendes testen:
1.) im Verzeichnis c:\test noch ein paar unterordner anlegen
2.) in Deiner ordner.vbs (btw: du kannst den Quelltext, wenn er mit dem Code-Tag gepostet wurde, auch einfach durch Klick auf den Text rechts oben vom entsprechenden Code ("in den Speicher kopieren") in den Zwischenspeicher hiefen und dann mit Einfügen im notepad wiedererscheinen lassen...)
folgende Zeile löschen:
und deine ordner.vbs (ohne diese Zeile) dann in C:\test speichern
3.) in einem Command-Fenster folgendes eintippen und mit Enter bestätigen:
Würde mich interessieren, welche Fehlermeldung da erscheint oder obs mit vorhandenen Unterordnern in C:\test eh funktioniert
Danke für Deine Mithilfe im Voraus
lg
Edi
Schade, dass der Code bei Dir nicht funktioniert, ich habe ihn soeben getestet und bei mir hat er tadellos das getan, was ich mir erwartete...
als Ursachen fürs Versagen fallen mir spontan 2 Gründe ein:
1.) der Ordner c:\test hat keine Unterordner (die 0 wird nur in den Unterordnern von c:\test ergänzt)
2.) Du hast Vista und diese Benutzerkontensteuerung aktiviert (das erkennst Du daran, dass bei Auswahl der Systemsteuerung o. ä. immer dieses Fenster aufpoppt, ob Du jetzt da wirklich was herummurksen willst . In einigen Fällen führt dies dazu, dass vbs-Dateien nicht ausgeführt werden...
Vielleicht hättest du ja noch ein bissl Zeit und könntest mir - quasi als Gegenleistung für meinen Hilfeversuch - folgendes testen:
1.) im Verzeichnis c:\test noch ein paar unterordner anlegen
2.) in Deiner ordner.vbs (btw: du kannst den Quelltext, wenn er mit dem Code-Tag gepostet wurde, auch einfach durch Klick auf den Text rechts oben vom entsprechenden Code ("in den Speicher kopieren") in den Zwischenspeicher hiefen und dann mit Einfügen im notepad wiedererscheinen lassen...)
folgende Zeile löschen:
on Error resume next
3.) in einem Command-Fenster folgendes eintippen und mit Enter bestätigen:
wscript c:\test\ordner.vbs
Würde mich interessieren, welche Fehlermeldung da erscheint oder obs mit vorhandenen Unterordnern in C:\test eh funktioniert
Danke für Deine Mithilfe im Voraus
lg
Edi
Hallo Herminator1!
Danke für die Blumen...
Das hab ich schon mitgekriegt, dass du mit Hilfe von LotPings Beitrag Dein Problem beseitigen konntest...
Mir gings ums TESTEN, da es mich interessiert hätte, warum mein Code bei Dir nicht funktioniert... (An allen anderen PCs, an denen ich ihn ausprobierte, hat er nämlich funktioniert...). und bei der Fehlersuche wäre natürlich die Fehlermeldung, die Du bekommst, hilfreich gewesen.
Na macht nix!
Freun wir uns, dass es ein Problem weniger auf dieser Welt gibt
lg
Edi
Danke für die Blumen...
Das hab ich schon mitgekriegt, dass du mit Hilfe von LotPings Beitrag Dein Problem beseitigen konntest...
Mir gings ums TESTEN, da es mich interessiert hätte, warum mein Code bei Dir nicht funktioniert... (An allen anderen PCs, an denen ich ihn ausprobierte, hat er nämlich funktioniert...). und bei der Fehlersuche wäre natürlich die Fehlermeldung, die Du bekommst, hilfreich gewesen.
Na macht nix!
Freun wir uns, dass es ein Problem weniger auf dieser Welt gibt
lg
Edi