1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

umbenennen von Ordnern nach Dateinamen

Dieses Thema im Forum "CGI, Perl, Python, Ruby, Power Shell" wurde erstellt von BodenseepiratKN, 5. August 2017.

  1. BodenseepiratKN

    BodenseepiratKN Grünschnabel

    Hallo!
    Ich hjabe jetzt schon einige Tage (!) damit verbracht eine Lösung für mein Problem zu finden. Ich such mir dabei nen Wolf *g*
    Ich habe folgendes Problem:
    mehrere Ordner, mit jeweils nur einer Datei.
    Ich möchte mit einer Batch, falls möglich jeden entsprechenden Ordner mit dem Namen der darin enthaltenen Datei umbenennen.
    Beispiel:
    Neuer Ordner 1 hat den Inhalt Beispiel 1.txt
    Neuer Ordner 2 hat den Inhalt Beispiel 2.txt
    usw.
    Da das weit über 500 Ordner sind wäre es eine Mammut Aufgabe jeden Ordner manuell umzubenennen.

    Hat wer eine Idee?

    Mein Dank wird Euch auf ewig nachschleichen :-D
     
  2. Technipion

    Technipion Erfahrenes Mitglied

    Hallo BodenseepiratKN,
    leider ist deine Frage nicht ganz vollständig. Sagen wir einmal in deiner Ausgangssituation hast du folgende Dateien:
    "Ordner 1" mit Inhalt "Datei 1.dat"
    "Ordner 2" mit Inhalt "Datei 2.dat"
    "Ordner x" mit Inhalt "Datei x.dat"

    Jeder Ordner enthält nur eine Datei.
    Okay, jetzt ist die Frage: Nach welchem Schema möchtest du die Ordner umbenennen?
    Möchtest du z.B. nur ein Präfix hinzufügen? Sodass z.B. folgendes rauskommt:
    "Präfix Ordner 1" mit Inhalt "Datei 1.dat"
    ...

    Oder soll die Umbenennung etwas mit den Dateien innerhalb der Ordner zu tun haben?

    Gruß Technipion

    PS: Prinzipiell kann man in Bash Ordner umbennen, indem man sie rekursiv zu einem anderen Ort verschiebt. In der Praxis besser ist allerdings sie zu kopieren, und die Originale erst dann zu löschen.
     
  3. BodenseepiratKN

    BodenseepiratKN Grünschnabel

    Danke für die schnelle Antwort.
    Die Ordner sollen gemäß der darin enthaltenen Datei umbenannt werden.
    Also aus Neuer Ordner 1 (in dem sich Beispiel 1.txt befindet), soll in "Beispiel1" umbenannt werden...
     
  4. Technipion

    Technipion Erfahrenes Mitglied

    Hallo BodenseepiratKN,
    bei mir steht es zeitlich im Moment leider sehr knapp. Ich habe dir schnell ein Bash-Skript gebastelt, das deine Aufgabe (zumindest so wie ich es verstanden habe) erledigt. Du wirst wahrscheinlich zu der ein oder anderen Zeile Fragen haben (was sehr gut ist, so lernt man schließlich!), stelle sie einfach hier im Forum. Auch wenn ich die nächsten Tage nicht antworten kann, werden dir viele andere Mitglieder mit Sicherheit gerne behilflich sein ;).

    Hier ist der Code:
    Code (Text):
    1. #!/bin/bash
    2.  
    3. OIFS="$IFS"
    4. IFS=$'\n'
    5.  
    6. for folderName in $(ls -d */);
    7.   do
    8.     cd "$folderName"
    9.     fileName=`ls`
    10.     cd ..
    11.     fileNameWithoutExtension=${fileName%%.*}
    12.     mv "$folderName" "$fileNameWithoutExtension";
    13. done

    Du kannst das Skript über $ bash rename.sh ausführen, oder es ausführbar machen und dann einfach $ ./rename.sh eintippen. Die Datei muss in dem Ordner liegen, in dem auch deine 500 umzubenennende Ordner liegen.

    Gruß Technipion
     
  5. BodenseepiratKN

    BodenseepiratKN Grünschnabel

    oha!
    Nun ich habe nicht erwartet das die Windows Powershell sich so stark von der "normalen" Stapelverarbeitung unterscheiddet. und nur mit batch Dateien kann ich gerade so arbeiten UND verstehn.
    Dein Code funktioniert so nicht und ich kann nicht mal sagen warum (ich versteh nicht eine Zeile)
    Ich bekomme eine Fehlermeldung, als ich die bash in einem Probeordner (mit nur 9 Ordnern und einer Datei Inhalt) ausprobierte bekam ich die Meldung
     

    Anhänge:

  6. sheel

    sheel I love Asm Administrator

    Hi

    Bash ist nicht Powershell, sondern (ursprünglich) eine Linux-Shell (von der es inzwischen auch ein paar eingeschränkte Varianten gibt, die man auf Windows installieren kann). Kein Wunder dass es nicht so direkt funktioniert.

    (Der Name ist keine Abwandlung von Batch, sondern vom Vorgänger "Bourne-Shell": Bourne-Again-SHell)
     
  7. BodenseepiratKN

    BodenseepiratKN Grünschnabel

    Dann bin ich vermutlich im falschen
    Forum? :confused:
     
  8. sheel

    sheel I love Asm Administrator

    Das Forum ist schon ok; nur haben Technipion und du wohl verschiedene Vorstellungen was eigentlich gemacht werden soll...

    hab selber mit Windows-Batch leider kaum was zu tun, aber evt. schaff ich es morgen, etwas funktionierendes zusammenzustellen...
     
  9. BodenseepiratKN

    BodenseepiratKN Grünschnabel

    Sorry fürs warten ;)
    Was mach ich nu? Könnte der Admin diesen Thread ins richtige Forum verschieben? Schätze ich bin hier falsch...