Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 16.05.2010 um 13:38:46 Uhr
Verschoben von "Windows"->"Netzwerk" nach "Batch & Shell".
GELÖST

Verzeichnisse und deren Unterverzeichnisse logisch umbenennen

Frage Entwicklung Batch & Shell

Mitglied: herminator1

herminator1 (Level 1) - Jetzt verbinden

15.05.2010, aktualisiert 16.05.2010, 3134 Aufrufe, 13 Kommentare

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!!!!!!!!!!
Mitglied: Edi.Pfisterer
15.05.2010 um 19:03 Uhr
Hallo herminator1 und herzlich willkommen im Forum!

hier der Code:
01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
function ordner(pfad) 
03.
 
04.
        Set objFolder = objFSO.GetFolder(pfad) 
05.
        Set colSubfolders = objFolder.Subfolders 
06.
 
07.
        For Each objSubfolder in colSubfolders 
08.
        on Error resume next 
09.
 
10.
                 vollername = objFSO.GetAbsolutePathName(objSubfolder) 
11.
                 ordnername = right(vollername, (len(vollername) - instrRev(vollername,"\"))) 
12.
                 pfad = left(vollername, instrRev(vollername,"\")) 
13.
                 ordnerneu = pfad & "0" & ordnername 
14.
 
15.
                 objFSO.MoveFolder pfad & ordnername , ordnerneu 
16.
 
17.
 
18.
         call ordner(ordnerneu) 
19.
        Next 
20.
 
21.
 
22.
end function 
23.
 
24.
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
Bitte warten ..
Mitglied: LotPings
15.05.2010 um 19:14 Uhr
Hallo Herminator1,

willkommen im Forum, leider fehlt mir in deinem Beitrag eine Begrüßung.
Das könnte so gehen (ungestestet)
01.
@Echo off 
02.
For /f "Delims=" %%A in ('Dir /B/S/AD ??-* ^| Sort /R ') Do Set "Name=%%~nxA"&Call :Check "%%A" 
03.
Goto :Eof 
04.
:Check 
05.
:: Prüfe of 2 Ziffern Minus am Anfang, wenn nicht nächster 
06.
Echo.%Name%|Findstr "^[0-9][0-9]-" >NUL 2>&1 ||Goto :Eof 
07.
Echo Ren %1 "%Name:~0,2%0%Name:~2%"
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.
Bitte warten ..
Mitglied: LotPings
15.05.2010 um 19:26 Uhr
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,

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
Bitte warten ..
Mitglied: Edi.Pfisterer
16.05.2010 um 02:14 Uhr
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 ):

01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
function ordner(pfad) 
03.
 
04.
        Set objFolder = objFSO.GetFolder(pfad) 
05.
        Set colSubfolders = objFolder.Subfolders 
06.
 
07.
        For Each objSubfolder in colSubfolders 
08.
        on Error resume next 
09.
 
10.
                 vollername = objFSO.GetAbsolutePathName(objSubfolder) 
11.
                 ordnername = right(vollername, (len(vollername) - instrRev(vollername,"\"))-2) 
12.
                 pfad = left(vollername, instrRev(vollername,"\")+2) 
13.
 
14.
                 ordnerneu = pfad & "0" & ordnername 
15.
                
16.
                 objFSO.MoveFolder pfad & ordnername , ordnerneu 
17.
 
18.
 
19.
         call ordner(ordnerneu) 
20.
        Next 
21.
 
22.
 
23.
end function 
24.
 
25.
call ordner("C:\test")
lg
Edi
Bitte warten ..
Mitglied: herminator1
16.05.2010 um 10:03 Uhr
Hai Edi!

Vielen Dank für die schnelle Antwort.

Jedoch passiert bei deinem o.g. Script gar nichts.
Ich habe also eine txt-Datei erstellt, deine o.g. Zeilen reinkopiert (ohne die Zeilennummern) und als "ordner.vbs" abgespeichert.

Auf den Doppelklick passiert nichts. Auch nicht in "c:\test".

Habe ich da was falsch gemacht???


Gruß
herminator1

PS.: ich glaube, ich konzentriere mich wieder auf Steuererklärungen.........
Bitte warten ..
Mitglied: herminator1
16.05.2010 um 10:14 Uhr
Servus LotPings,

sorry für die fehlende Begrüßung - aber nachdem ich meinen Beitrag aufgrund nicht funktionierenden wlans ungefähr das siebte mal verfasst habe, ist mir die wahrscheinlich untergegangen......

Vielen Dank übrigens für deine Hilfe.
Allerdings funktioniert dies nicht - bei mir....

ich habe also eine txt-Datei erstellt, die o.g. Zeilen (ohne Zeilennummern) reinkopiert und im cmd gestartet.

Dabei erschien folgender Fehler:
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig:
%~Name:~0,2%0%Name:~2%"

Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig sind.
Syntaxfehler.

Kannst du mir da nochmal weiterhelfen?

Herzlichen Dank!!!!
Bitte warten ..
Mitglied: LotPings
16.05.2010 um 10:18 Uhr
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.
Bitte warten ..
Mitglied: herminator1
16.05.2010 um 10:28 Uhr
uuuiiiihhhh !

Supie !

Vielen dank für deine Hilfe - genau so wollte ich es.

du hast mir soeben stundenlange Nachbesserungsarbeit erspart.....

Ich hoffe, dich hat's nicht zu viel zeit gekostet.......

Gruß
herminator1
Bitte warten ..
Mitglied: LotPings
16.05.2010 um 10:56 Uhr
Zitat von herminator1:
Vielen dank für deine Hilfe - genau so wollte ich es.

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
Bitte warten ..
Mitglied: Edi.Pfisterer
16.05.2010 um 14:43 Uhr
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:
01.
on Error resume next
und deine ordner.vbs (ohne diese Zeile) dann in C:\test speichern

3.) in einem Command-Fenster folgendes eintippen und mit Enter bestätigen:

01.
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
Bitte warten ..
Mitglied: herminator1
17.05.2010 um 14:56 Uhr
Servus Edi!

Wie du vielleicht nach posten deines letzten Kommentars vielleicht gesehen hast, hat sich mein Problem durch Hilfe von LotPings bereits zu meiner vollsten Zufriedenheit gelöst.

Ich danke dir aber trotzdem herzlichst für deine Bemühungen!

Schon toll, was alles geht, wenn man sich auskennt!!!!!
Hut ab vor solchen Leuten wie Ihr es seid....!!!!

Gruß
Herminator1
Bitte warten ..
Mitglied: Edi.Pfisterer
18.05.2010 um 10:57 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Verzeichnisse vergleichen mit Zwischenschritt (22)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Batch & Shell
Pdf Files umbenennen (7)

Frage von Sacred zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...