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
GELÖST

Unterordner mit bestimmten Namen umbenennen per batch,...

Frage Entwicklung Batch & Shell

Mitglied: CADSusi

CADSusi (Level 1) - Jetzt verbinden

08.04.2011 um 08:48 Uhr, 4928 Aufrufe, 15 Kommentare

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
Mitglied: Biber
08.04.2011 um 09:47 Uhr
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
Bitte warten ..
Mitglied: Skyemugen
08.04.2011 um 10:07 Uhr
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é
Bitte warten ..
Mitglied: bastla
08.04.2011 um 10:46 Uhr
@Biber
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
Bitte warten ..
Mitglied: CADSusi
08.04.2011 um 11:51 Uhr
hallöchen,

vielen Dank!

Absolut einmalig die Aktion.

Hintergrund ist, daß diese Ordner als Arbeitsbereich für die einzelnen Bearbeiter dient. Nun haben wir den Fehler gemacht, diese nur mit dem Vornamen des Bearbeiters zu versehen. Seit kurzem haben wir aber bspw. 2 x Arnold... Um nicht mit Zahlen arbeiten zu müssen, wo letztlich nur ein Teil der Mitarbeiter sich merken kann welche Zahl zu wem gehört, würd ich es einfach am Loginnamen orientieren wollen. Ist zwar auch nicht 100% sicher vor Dopplungen bei Meier, Schulze und Schmidt, aber schon besser.

LG Susi

edit: Innerhalb des Parentordners sollten denk ich keine Ordner mit dem Namen vorkommen. Aber gänzlich ausschließen kann ich´s leider nicht. Ich kann aber garantieren, daß es sich um die 3. Unterebene handelt.

Stammordner (in dem die .bat liegt) - Jahr - Projektnummer - "A" ; "B" ; "C" usw.
Bitte warten ..
Mitglied: CADSusi
08.04.2011 um 11:57 Uhr
hallihallo,

nein keine Teile oder Teilnamen. Betreffender Ordner heißt "A" und ist umzubennen in "X". In Betracht kommen allerdings nur Unterordner des Verzeichnisses (Ordners), in dem auch die name.bat oder VBS liegt.

LG Susi
Bitte warten ..
Mitglied: 60730
08.04.2011 um 13:30 Uhr
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...

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ß
Bitte warten ..
Mitglied: CADSusi
08.04.2011 um 13:41 Uhr
hi,

Ziel ist wirklich nur umbenennen von Unterordnern innerhalb eines Ordners.

Projekte 
     |---Jahr1 
     |       |---Projektnr.1 
     |       |           |---"A"  umbenennen in  "X" 
     |       |           |---"B"  umbenennen in  "Y" 
     |       |           |---................ 
     |       |---Projektnr.2 
     |       |           |---"A"  umbenennen in  "X" 
     |       |           |---"B"  umbenennen in  "Y" 
     |       |           |---................ 
     |       |---................ 
     |---Jahr2 
     |       |---Projektnr.1 
     |       |           |---"A"  umbenennen in  "X" 
     |       |           |---"B"  umbenennen in  "Y" 
     |       |           |---................ 
     |       |---Projektnr.2 
     |       |           |---"A"  umbenennen in  "X" 
     |       |           |---"B"  umbenennen in  "Y" 
     |       |           |---................ 
     |       |---................ 
Hoffe so ist´s verständlicher...

LG Susi
Bitte warten ..
Mitglied: Biber
08.04.2011 um 13:49 Uhr
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)
(=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
Bitte warten ..
Mitglied: bastla
08.04.2011 um 14:21 Uhr
Hallo @All!

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
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
Bitte warten ..
Mitglied: Biber
08.04.2011 um 18:05 Uhr
@bastla
Zitat von bastla:
... 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 
> 
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?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
08.04.2011 um 20:38 Uhr
@Biber
Hast du meinen POC zu dem Thema "SORT" im meinem Kommentar gesehen?
Das ja - wollte nur hinsichtlich der Umsetzung komplettieren ...

Schönes Wochenende
bastla
Bitte warten ..
Mitglied: Biber
10.04.2011 um 20:02 Uhr
Sache ma', Susi,

müssen wir dein "Vielen Dank im Voraus" wörtlich nehmen oder kommt noch ein Feedbäckle? Oder grünes Häkle?

Grüße
Biber
Bitte warten ..
Mitglied: CADSusi
11.04.2011 um 13:43 Uhr
Hi und sorry für die späte Rückmeldung,

mußte hier noch was anderes zwischenschieben und hatte am WE recht viel privaten Kram zu erledigen. Meld mich gleich nachdem ich mit probieren durch bin (hoffentlich auch gleich mit grünem Häckle).

LG Susi
Bitte warten ..
Mitglied: Biber
11.04.2011 um 13:50 Uhr
Moin CADSusi,

den Satz mit dem privaten Kram und dem Was-dazwischenschieben-müssen, den lass mal ich unkommentiert.
Frühling ist's...
Aber setz ggf. ein grünes Häkchen oder Häkle, aber kein Häckle oder Häckchen bitte.

Bis dahin
Biber
Bitte warten ..
Mitglied: CADSusi
11.04.2011 um 15:28 Uhr
Danke an Alle Helfer

It´s done
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...