Top-Themen

Aktuelle Themen (A bis Z)

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 19.01.2010 um 19:52:47 Uhr
Mehrere Verzeichnisse umbennen
Set /a rgc+=1
643
GELÖST

Mehrere Verzeichnisse umbennen

Frage Entwicklung Batch & Shell

Mitglied: flo7689

flo7689 (Level 1) - Jetzt verbinden

19.01.2010, aktualisiert 19:52 Uhr, 3703 Aufrufe, 7 Kommentare

Hey Leute,

bisher habe ich immer eine Antwort auf meine Fragen in dem Forum hier gefunden. Ja... bisher! Denn jetzt finde ich keine Lösung für mein Problem. Aber ich hoffe (und weiß), ihr könnt mir helfen!

Also, hier mein "Problemchen":
In meinem Verzeichnis (H:\test\) sind etliche Order von Typ (12345_abc, 01234_xyz, ...). Jeder dieser Ordner hat wieder eine feste Unterorder-Struktur. Nun möchte ich nahezu jeden dieser Unterorder (in jedem Ordner) umbennenen. Ich habe auch schon eine kleine Batch geschrieben, aber irgendwie will die nicht so ganz, wie ich es gerne hätte. Hier mein Entwurf:

01.
@ECHO OFF 
02.
SET verzeichnis=H:\test 
03.
FOR /D %a in ('DIR %verzeichnis% /AD /S /B') DO ( 
04.
 
05.
IF EXIST %verzeichnis%\*\*010*\020_test REN %verzeichnis%\*\010*\umbenannt 
06.
:: hier würden jetzt noch mehr IF-EXIST-Anweisungen zum Umbennen kommen... :: 
07.
)
Wo liegt das Problem bei dem Batch-File?
Schon mal vielen Dank für Eure Hilfe!

Gruß
Flo
Mitglied: bastla
19.01.2010 um 18:45 Uhr
Hallo flo7689 und willkommen im Forum!
Wo liegt das Problem bei dem Batch-File?
Zunächst musst Du Dich entscheiden, ob Du eine "for /d"-Schleife (= nur für eine Unterverzeichnisebene) oder eine "for /f"-Schleife verwenden willst - derzeit ist es eine (wie Du schon bemerkt hast) unbrauchbare Mischung ...

Übrigens: Damit wir dann alle Varianten durch hätten :
for /r "%verzeichnis%" %a in (.) do ...
Weiters kann "if exist" für den letzten Pfadbestandteil Platzhalterzeichen ("*" oder "?") verarbeiten, aber nicht für mehrere Verzeichnisebenen - Abhilfe schaffen könnte hier eine stufenweise Bearbeitung mit mehreren "for /d" oder ein passendes "findstr" ...

Grüße
bastla
Bitte warten ..
Mitglied: flo7689
19.01.2010 um 19:10 Uhr
Hi Bastla,

danke für deine schnelle Antwort!
Ach du schreck... verschachtelte FOR-Anweisungen!?!? Wie soll das denn dann aussehen?

Mit FINDSTR kann ich aber keinen Befehl danach ausführen. So wie ich das momentan sehe... Oder etwa doch!?

Am besten wäre natürlich eine kleine Batch, in der ich die Verzeichnistiefe angeben kann (mit 1, 2, 3, ...) und händich dann einen (mehrere) Befehl(e) hinzufügen könnte. Geht das überhaupt?

Greetz
Flo
Bitte warten ..
Mitglied: bastla
19.01.2010 um 20:34 Uhr
Hallo flo7689!
Ach du schreck... verschachtelte FOR-Anweisungen!?!? Wie soll das denn dann aussehen?
Die Verschachtelung ist relativ einfach durchzuführen:
01.
for /d %a in ("%verzeichnis%\*.*") do @for /d %b in ("%a\*010*.*") @do for /d %c in ("%b\*.*") do @echo %~fc
Mit FINDSTR kann ich aber keinen Befehl danach ausführen. So wie ich das momentan sehe... Oder etwa doch!?
Lässt sich einfach verknüpfen:
... echo %c|findstr /e "020_test">nul && ren ...
Falls das nicht genügt, solltest Du Dein Vorhaben etwas genauer (insbes hinsichtlich konstanter / variabler Pfadbestandteile) beschreiben ...

Grüße
bastla
Bitte warten ..
Mitglied: flo7689
19.01.2010 um 21:10 Uhr
Nabend bastla!

Ich habe die deine Bestandteile nun mal in meine Batch eingefügt, aber irgendwie tut sich gar nix...

Hier mal meine Ordnerstruktur, wie ich sie habe (normal noch etwas ausführlicher, aber zur Vereinfachung, habe ich es mal einiges gelöscht):
http://weigelmail.de/struktur.PNG

Die roten Ordner sollen die ersten 5 Zeichen des übergeordneten Ordner aufgreiffen und voral stellen (also: 01234_020_Besuch (das kann ich aber hinterher auch selber machen)).
Die blauen Ordner dürfen nicht verändert werden...

Wäre echt klasse, wenn du mir da mal ein bisschen auf die Sprünge helfen könntest!

Greetz
Flo (kannst die Zahlen ruhig weglassen)
Bitte warten ..
Mitglied: bastla
19.01.2010 um 21:25 Uhr
Hallo FloohneZahlen

Das Schema könnte etwa so aussehen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Dies und Das\test" 
03.
set "Besuch=020_Besuch" 
04.
 
05.
for /d %%a in ("%Basis%\*.*") do ( 
06.
    for /d %%b in ("%%a\*_*_Allgemein") do ( 
07.
        for /f "delims=_" %%i in ("%%~nxb") do ( 
08.
            if exist "%%b\%Besuch%" ren "%%b\%Besuch%" "%%i_%Besuch%" 
09.
10.
11.
)
Die Unterscheidung zwischen "rot" und "blau" habe ich (da Du dafür keine Kriterien angegeben hattest) anhand des Namensbestandteiles "Allgemein" getroffen ...

Grüße
bastla
Bitte warten ..
Mitglied: flo7689
19.01.2010 um 21:34 Uhr
Wow, super. Danke, funktioniert!

Nun bräuchte ich nur noch eine Anleitung dazu, damit ich auch verstehe was da gemacht wird! ;-P
Wenn ich nun mehr ändern will, dann muss ich mehrere for-Verschachtelungen machen (und anpassen), oder?

Schönen Abend noch!
Bitte warten ..
Mitglied: bastla
19.01.2010 um 22:16 Uhr
Hallo flo!

Die Schleife in Zeile 5 geht alle Unterordner des Basis-Ordners durch (in Deinem Beispiel demnach "01234tester" und "12345test") - die stehen dann jeweils in "%%a".

Zeile 6 macht das selbe für jeden der Unterordner aus Zeile 5, allerdings mit der Einschränkung auf den Namensbestandteil "*_*_Allgemein (daher: "01234tester\01234_000_Allgemein" und "12345test\12345_000_Allgemein")

Die Zeile 7 sorgt für das Entnehmen des ersten Teiles (anhand des Trennzeichens "_") aus dem Ordnernamen von "%%b" - in "%%i" steht dann demnach "01234" bzw "12345"

Zeile 8 überprüft, ob es im Ordner "%%b" einen Unterordner "020_Besuch" (da diese Bezeichnung mehrfach benötigt wird, verwende ich dafür eine Variable) gibt und führt ggf die Umbenennung unter Verwendung der schon bekannten Variablen durch
BTW: Genauer wäre die Zeile 8 mit einem zusätzlichen "\", damit tatsächlich nach einem Ordner gesucht wird:
if exist "%%b\%Besuch%\" ren "%%b\%Besuch%" "%%i_%Besuch%"
Leichter nachvollziehbar wird das Ganze, wenn Du zwischen die einzelnen "for"-Zeilen jeweils ein "echo" einbaust - also zB zwischen Zeile 5 und 6 ein "echo %%a", oder während der Testphase "echo on" anstelle von "echo off" verwendest (und den Batch von der Kommandozeile startest) ...
Wenn ich nun mehr ändern will, dann muss ich mehrere for-Verschachtelungen machen (und anpassen), oder?
Ja; für jede weitere Ebene kannst Du eine weitere "for /d"-Schleife hinzufügen.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Mehrere Ordner per Script umbennenen
Frage von wadimzEntwicklung1 Kommentar

Hallo zusammen, kann mir vllt jemand weiter helfen? Ich habe einen Ordner mit ca. 50 Unterordnen. Jeder Unterordnen fängt ...

Suse
Mehrere Verzeichnisse bei Suche ausschliessen
gelöst Frage von JedujaSuse3 Kommentare

Ich möchte mit einer Suche alle Dateien (nicht Verzeichnisse) ab einer bestimmten Grösse nach Grösse sortiert ausgeben lassen und ...

Apache Server
Weiterleitung eines nicht mehr existierenden Verzeichnisses
Frage von TrubleApache Server1 Kommentar

Hallo, wir habe eine neue Webseite. Auf der alten Webseite lagen die Dokumente unter "www.domain.de/fileadmin/Redakteure/Downloads/" Auf der neuen Webseite ...

Batch & Shell
Mehrere Verzeichnisse in einen Script angeben
gelöst Frage von KnuefiBatch & Shell17 Kommentare

Hallo zusammen, ich brauche eure Hilfe. Ich habe unten stehendes Script zum löschen ältere Dateien in einen Unterordner. Nun ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 105 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell16 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...