Mehrere Dateien umbenennen

  • Bräuchte bitte mal einen Tip wie man das angehen könnte.

    Ich habe mir ein Script gebastelt das mir mit hilfe einer Listbox alle markierten Dateien umbennen soll.

    Dabei möchte ich für jede ausgewählte Datei ein Eingabefeld bekommen für den neuen Dateinamen.

    Man wählt dabei mehrere Dateien im Lister $list_dir aus, danach wird das Eingabe-GUI $gui_renamefile geöffnet das aus der ersten ausgewählt Datei den Namen ausliest und vorgibt. Diesen kann ich dann beliebig ändern und mit der Schaltfläche OK wird die erste Datei dann umbenannt.

    Ist das erledigt, soll das Eingabe-GUI wieder erscheinen und die nächste Datei auslesen/umbennenen.

    Ich stehe da jedoch mit meinen Überlegungen nun etwas an. Wie könnte man das umsetzen ?

  • Ich denke, hier findest du Anregung:

    Oscar
    26. Februar 2009 um 23:47
  • Den kompletten Code mit über 10 Zeilen hier zu posten, macht keinen Sinn.

    Wie gesagt, es geht mir in erster Linie darum das bei einer mehrfach Auswahl aus einer Listbox für jeden Eintrag ein Eingabe-GUI geöffnet wird in dem ich dann den namen der nächsten Datei eingeben kann die umbenannt werden soll.

  • Entweder For Schleife in der neuen GUI die nach jeder Änderungsbestätigung die entsprechenden Aktionen durchführt oder (suboptimal) for schleife um die GUI und diese jedesmal ausblenden, neu befüllen und wieder einblenden.

    So lange bis das für die letzte markierte Datei der Fall ist und dann die Auswahl in der Listbox aufheben.

    Hmm, stimmt was MojoeB sagt, eine Inputbox jedesmal entsprechend mit Defaultwerten befüllen und deren Ausgabe zum Umbennen nehmen, müsste auch gehen.

  • Ich kenne dein Skript nicht aber ich würde

    so heran gehen ohne dir jetzt eine Zeile Code vorzusetzen.

    -> GUIliste ();eigne gui erstellen

    ->> listview (so einstellen das checkboxen angezeigt werden für jeden Eintrag in der liste.)

    ->> Edit Fenster (nicht zu groß nach Geschmack, und nicht anklickbar!) (könnte man aber auch alles andere nehmen ich bevorzuge halt edit boxen.)

    ->> btn start, btnclose ,btn add paht ->FileselectFolder

    funktionen:

    ->>Daten sammeln (pfade) FileselectFolder

    -->Pfade in ein array sichern!

    ->>pfade durchsuchen nach dateien _FileListToArray

    ->daten und pfade zusammen in einem 2d Array sichern.

    (viewlist nun leeren falls noch befüllt.)

    ->>gefunden daten in die listview füllen / 2d Array = GUICtrlCreateListViewItem

    ----> diese Funktionen nun extra in einer Funktion sichern _funktionb($paths) pfade dann mit einem Parameter übergeben. (erst aber später aufrufen.)

    ->> btn add paht > pfade hinzufügen > sie in der editbox auch anzeigen oder von mir aus auch in einer ListBox(FileselectFolder)

    ->Checkboxen der gewünschten Dateien anklicken.

    -> Btn start > alle aktiven Checkboxen Ubound

    > For schleife

    _funktion zum umbenennen (dort ist auch dann die Inputbox drinnen falls nicht automatisch der Name geändert werden soll.)

    war _funktion erfolgreich dann mach den harken bei der Checkbox wieder raus.
    next

    Ist die For schleife beendet
    dann starte am ende die gebündelte _funktionb($Pfade) um die viewlist zu aktualisieren-.

    Wie du sieht das ist kein Code aber so würde ich es aufbauen, wenn es mein Projekt wäre, es ist natürlich dir überlassen wie du ans ziel kommst.


    EDIT

    Falls du mein gebrabbelt nicht verständlich ist, habe ich meinen text mal chatgpt geben
    Also hier die KI generierte Fassung meines Textes ^^:

    Ich bin nicht mit deinem genauen Skript vertraut, aber ich würde folgendermaßen vorgehen, ohne dir direkt Code vorzuschlagen:

    1. Zuerst würde ich eine GUI erstellen, indem ich die Funktion "GUIliste();" verwende, um eine eigene GUI zu erstellen.
    2. Dann würde ich eine ListView hinzufügen und sie so einstellen, dass für jeden Eintrag in der Liste Checkboxen angezeigt werden.
    3. Ein Edit-Fenster sollte erstellt werden, nicht zu groß, nach deinem Geschmack, und es sollte nicht anklickbar sein. Du könntest auch andere Elemente verwenden, aber ich persönlich bevorzuge Edit-Boxen.
    4. Außerdem würde ich Buttons hinzufügen: "Start", "Schließen" und "Pfad hinzufügen". Der Button "Pfad hinzufügen" sollte die Funktion "FileselectFolder" aufrufen.

    Folgende Funktionen wären erforderlich:

    1. "Daten sammeln": Hier würden Pfade gesammelt, indem die Funktion "FileselectFolder" verwendet wird, und die gesammelten Pfade würden in einem Array gesichert werden.
    2. Die gesammelten Pfade würden mithilfe von "_FileListToArray" nach Dateien durchsucht, und die Daten und Pfade würden in einem 2D-Array kombiniert und gesichert.
    3. Die ListView sollte geleert werden, falls sie bereits Einträge enthält.
    4. Die gefundenen Daten würden in die ListView eingefügt. Dies könnte mithilfe der Funktion "GUICtrlCreateListViewItem" geschehen. Diese Schritte könnten in einer separaten Funktion namens "_funktionb($paths)" organisiert werden, der die Pfade als Parameter übergeben werden. Diese Funktion sollte später aufgerufen werden.
    5. Über den Button "Pfad hinzufügen" könnten weitere Pfade hinzugefügt werden. Diese würden in der Edit-Box oder alternativ in einer ListBox ("FileselectFolder") angezeigt werden.
    6. Die gewünschten Dateien könnten durch Ankreuzen der Checkboxen ausgewählt werden.
    7. Wenn der "Start"-Button gedrückt wird, würden alle aktiven Checkboxen ausgewählt und durch eine "For"-Schleife verarbeitet.
    8. Innerhalb der Schleife könnte die Funktion zum Umbenennen aufgerufen werden. Hier könnte auch eine Eingabeaufforderung (Inputbox) verwendet werden, wenn der Name nicht automatisch geändert werden soll.
    9. Wenn die "_funktion" erfolgreich abgeschlossen ist, würde die entsprechende Checkbox wieder abgewählt.
    10. Die Schleife würde alle Checkboxen durchlaufen, und nach ihrem Abschluss würde die gebündelte "_funktionb($Pfade)" aufgerufen werden, um die ListView zu aktualisieren.

    So, das ist eine strukturierte Zusammenfassung deines Ansatzes, um das Projekt umzusetzen. Den genauen Code musst du noch entwickeln, aber diese Schritte sollten dir eine gute Anleitung bieten, wie du vorgehen könntest.

    2 Mal editiert, zuletzt von MojoeB (15. August 2023 um 17:09) aus folgendem Grund: chatgpt