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

Script zum Ordner Umbenennen

Frage Entwicklung Batch & Shell

Mitglied: Daniels88

Daniels88 (Level 1) - Jetzt verbinden

25.09.2008, aktualisiert 26.09.2008, 9751 Aufrufe, 5 Kommentare

Hallo zusammen,

ich habe folgendes Problem:

Ich habe ein Haufen von Ordnern derren Namen wie folgt aufgebaut ist:
Unterschiedlich lange Namen, nach jedem Wort ein "."

Meine.Bilder.Urlaub.2008.I
Meine.Bilder.Sommer.Ferien.2008.D
Meine.Bilder.Winter.Urlaub.2008.GB
Meine.Bilder.Sommer.Da.2008.D
Meine.Bilder.Winter.Hier.2008.CZ
Meine.Bilder.Herbst.Urlaub.2008.D
Meine.Bilder.Zwischendurch.Urlaub.1998.A
Ich.find.den.Aufbau.blöd.Urlaub.2008.D
Ich.2009.Urlaub.Test

Würde da gerne ein Script drüber laufen lassen, was mir die Ordner so umbenennt, dass der Name ab einer bestimmten Stelle abgeschnitten wird und die "Punkte" durch Leerzeichen " " ersetzt werden.

Z.B in diesem Sollte es am Ende so ausschaun: - Die Stelle zum Abschneiden soll "2008" sein, "2008" und alles folgende soll weg.

Meine.Bilder.Urlaub.2008.I -> Meine Bilder Urlaub
Meine.Bilder.Sommer.Ferien.2008.D -> Meine Bilder Sommer Ferien
Meine.Bilder.Winter.Urlaub.2008.GB -> Meine Bilder Winter Urlaub
Meine.Bilder.Sommer.Da.2008.D -> Meine Bilder Sommer Da
Meine.Bilder.Winter.Hier.2008.CZ -> Meine Bilder Winter Hier
Meine.Bilder.Herbst.Urlaub.2008.D -> Meine Bilder Herbst Urlaub
Meine.Bilder.Zwischendurch.Urlaub.1998.A -> Meine Bilder Zwischendurch Urlaub
Ich.find.den.Aufbau.blöd.Urlaub.2008.D -> Ich find den Aufbau blöd Urlaub
Ich.2009.Urlaub.Test -> Ich.2009.Urlaub.Test

Die Auswahlstelle "2008" sollte wechselbar sein.

Hoffe da kann mir einer etwas basteln.

Mfg DAniel
Mitglied: eazy-isi
26.09.2008 um 07:39 Uhr
Servus,

sowas funktioniert auch mit dem TotalCommander. Hier gibts ein Mehrfach-Umbenenn-Tool.

Hier der link:

http://www.gishler.com

Gruß
eazy_isi
Bitte warten ..
Mitglied: bastla
26.09.2008 um 07:44 Uhr
Hallo Daniels88!

Falls Du gerade keinen totalen Commander zur Hand hast, sollte es auch so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Alle meine Fotos" 
03.
set Jahr=2008 
04.
set Repl=$ 
05.
 
06.
pushd "%Ordner%" 
07.
for /d %%i in (*.*) do call :ProcessDir "%%i" 
08.
popd 
09.
goto :eof 
10.
 
11.
:ProcessDir 
12.
set "NameAlt=%~1" 
13.
call set "NameAlt=%%NameAlt:.%Jahr%=%Repl%%%" 
14.
for /f "delims=%Repl%" %%n in ("%NameAlt%") do set "NameNeu=%%n" 
15.
set "NameNeu=%NameNeu:.= %" 
16.
if not exist "%NameNeu%" echo ren %1 "%NameNeu%" 
17.
goto :eof
Das "$"-Zeichen hinter "Repl=" darf in keinem Ordnernamen vorkommen, ansonsten durch ein anderes Zeichen ersetzen (etwa "§"). Einige Zeichen, wie "<>%&|" solltest Du dabei aber vermeiden.

Vor dem "ren"-Befehl steht derzeit noch ein "echo", damit Du gefahrlos testen kannst (dazu vielleicht noch vor Zeile 9 eine neue Zeile "pause" einfügen) - es werden so die Umbenennungsbefehle nur angezeigt, aber nicht ausgeführt; um tatsächlich den Namen zu ändern, einfach das "echo" entfernen.

Sollte übrigens der neue Ordnername schon vorhanden sein, wird der Ordner, welcher auf den selben Namen gebracht werden sollte, natürlich nicht umbenannt ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
26.09.2008 um 17:20 Uhr
Moin Daniels88,
</OT>
ich habe folgendes Problem:
......
(hier steht eine Aufzählung von einem gefühlten Dutzend Urlaube, die Du Dir 2008 gegönnt hast
......
Hoffe da kann mir einer etwas basteln.

Ich dagegen hoffe, dieses Zitat kommt nur durch die stark verkürzte Darstellung so schräg rüber.

Sinn dieses Forums ist nicht, dass einige unermüdliche Helfer anderen für die Verwaltung der Urlaubstage Fix-und-Fertig-Rundum-Glücklich-Lösungen liefern.

Bitte speziell bei Code-Problemchen immer das zeigen, was schon vorhanden ist.
Oder was schon versucht wurde.

Allerdings: Die eigentliche Problembeschreibung finde ich vorbildlich!!
So etwas würde ich hier gerne öfter sehen.
</OT>


Schönes Wochenende allen
Biber
Bitte warten ..
Mitglied: Daniels88
26.09.2008 um 17:38 Uhr
Hallo zusammen,

gerade konnte ich die Umsetzung meines Problems versuchen.

Erstmal vorweg
@ Biber:
Das mit den Bildern war spontan, mir viel nichts besseres ein. Im Grunde sind es Ordner auf einem Server, nur die wollte ich so nicht ausstellen. Aber der Aufbau der Namen und der Sinn ist der gleiche.
Ich stimme dir vollkommen zu, dass es hier nicht so sein sollte das sich hier Leute wie "bastla" ständig die Mühe machen und die Leute ohne selber zu Arbeiten, ohne Nachzudenken, sich ausruhen und nur einfach das fertige am Ende abgreifen.
Nächstes mal werde ich mein Anfang noch Einfügen, weil ich geb zu ich hatte schon einen Anfang... nur war ich gespannt ob es auch vollkommen anders geht ;) und das tut es scheinbar

@bastla
Vielen Dank schon mal für dieses erste Script, ich habs in ner kleinen Test-Ordner-Struktur versucht und es Funktioniert ! *super*
ABER: Habe das Problem das es nicht immer "2008" ist, aber wenn ich einmal ausgeführt habe er ALLE Ordner zumindest die "." wegnimmt.
Dannach kann ich nicht mit einem anderen Kriterium "2007" nocheinmal starten, weil er den Aufbau mit den Punkten ja nicht mehr hat.
Gibts die Chance auf mehrere Suchkriterien.
Meine.Bilder.Türkei.2007.Holiday.und.2008.Test

-Nach einer Ausführung mit "2008" hab ich:
Meine Bilder Türkei 2007 Holiday und
-Nun sollte aber auch alles davor weg.
Leider stecken in JEDEM Ordner immer 2008 und dazu in vielen halt noch vorrausstehend etwas anderes wie hier "2007" so das Jeder Ordner einbezogen wird, sonst könnte man das ja Nach einander machen. Vielleicht kann man da ja etwas anpassen.

Ich übe mich in dieser Zeit das erste Script für mich zu verflücken das ich die einzelnen Teile verstehe und vllt selbst etwas tun kann.

Gerade wünsch ich mir ich könnte die richtigen Ordner posten

Gruß Daniel
Bitte warten ..
Mitglied: bastla
26.09.2008 um 17:56 Uhr
Hallo Daniels88!

Du könntest ja vorweg schon die Suchmaske anpassen:
01.
for /d %%i in (*%Jahr%*.*) do call :ProcessDir "%%i"
damit würden nur die entsprechenden Ordner erfasst.

[Edit]
Um gleich einige Jahre angeben zu können, würde sich etwa folgende (ungetestete) Variante anbieten:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Alle meine Fotos" 
03.
set Repl=$ 
04.
 
05.
pushd "%Ordner%" 
06.
for %%a in (2006 2007 2008) do ( 
07.
    for /d %%i in (*%%a*.*) do call :ProcessDir "%%i" "%%a" 
08.
09.
popd 
10.
goto :eof 
11.
 
12.
:ProcessDir 
13.
set "NameAlt=%~1" 
14.
call set "NameAlt=%%NameAlt:.%~2=%Repl%%%" 
15.
for /f "delims=%Repl%" %%n in ("%NameAlt%") do set "NameNeu=%%n" 
16.
set "NameNeu=%NameNeu:.= %" 
17.
if not exist "%NameNeu%" echo ren %1 "%NameNeu%" 
18.
goto :eof
[/Edit]

[Edit2] Leider habe ich erst beim nochmaligen Lesen wirklich erkannt, wo das Problem mit mehreren Jahren liegt - daher (falls nicht ohnehin das frühere Jahr im Namen weiter vorne steht und bei aufsteigender Reihenfolge der zu behandelnden Jahre - wie in meinem Entwurf gleich oberhalb - ohnehin der Rest dahinter bereits eliminiert ist), einfach mehrere Zeilen der Art
01.
call set "NameAlt=%%NameAlt:.%Jahr1%=%Repl%%%" 
02.
call set "NameAlt=%%NameAlt:.%Jahr2%=%Repl%%%" 
03.
call set "NameAlt=%%NameAlt:.%Jahr3%=%Repl%%%"
nacheinander im ersten geposteten Batch verwenden (und die Variablen natürlich vorweg mit den entsprechenden Jahren belegen) - ist ein bestimmtes Jahr nicht enthalten, wird auch nichts ersetzt ...
[/Edit2]
Um beim "verflücken" (des ursprünglichen Batches) etwas zu helfen :

Im für jeden Ordner aufgerufenen Unterprogramm ":ProcessDir" wird in Zeile 12 der Suchbegriff (ergänzt um den Punkt davor) durch "$" ersetzt - so kann in Zeile 13 der gesamte Name in den Teil vor dem Jahr (bzw jetzt eben schon "$") und den Rest (der nicht mehr interessiert) zerlegt werden und nur dieser erste Teil (ich hätte auch "tokens=1" schreiben können, das ist aber ohnehin default) als neuer Name verwendet.

In Zeile 14 werden dann in diesem neuen Namen die Punkte gegen Leerzeichen ausgetauscht.

Der Rest um diese Zeilen herum dürfte eigentlich klar sein ...

Grüße
bastla

P.S.: @Biber
Bitte speziell bei Code-Problemchen immer das zeigen, was schon vorhanden ist. Oder was schon versucht wurde.
Manchmal ist's aber effizienter (insbes bei einer derart brauchbaren Problembeschreibung), sich gar nicht erst in einen anderen Code hineinlesen/-denken zu müssen ...
Bitte warten ..
Neuester Wissensbeitrag
Windows Update

Windows Update-Suche nach Win7 Neuinstallation wieder schneller

(1)

Erfahrungsbericht von the-buccaneer zum Thema Windows Update ...

Ähnliche Inhalte
Batch & Shell
gelöst Ordner Umbenennen +heutiges Datum (12)

Frage von ahsenden zum Thema Batch & Shell ...

Batch & Shell
gelöst Alle Dateien in einem Ordner umbenennen (5)

Frage von l.scheper zum Thema Batch & Shell ...

Windows 7
Netzwerkverbindungsverknüpfung per Script in Ordner

Frage von n0wn23 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Exchange Server
Bestehende eMails autoamatisch weiterleiten (21)

Frage von metal-shot zum Thema Exchange Server ...

Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (21)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (18)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (16)

Frage von ProfessorZ zum Thema Router & Routing ...