Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Script zum Ordner Umbenennen

Frage Entwicklung Batch & Shell

Mitglied: Daniels88

Daniels88 (Level 1) - Jetzt verbinden

25.09.2008, aktualisiert 26.09.2008, 9989 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Ordner Umbenennen +heutiges Datum (12)

Frage von ahsenden zum Thema Batch & Shell ...

Windows Server
Ordner umbenennen nicht möglich (8)

Frage von carbon1X zum Thema Windows Server ...

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

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

Entwicklung
Mehrere Ordner per Script umbennenen (1)

Frage von wadimz zum Thema Entwicklung ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows Server
gelöst Kopiervorgang schlägt fehl, weil Datei- und Ordnername zu lang sind (14)

Frage von Schroedi zum Thema Windows Server ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...