Entfernen Sie den Ordnernamen aus dem Dateinamen basierend auf einem vorhandenen Apple-Skript

Also habe ich dieses Apple-Skript hier, mit dem ich den Ordnernamen vor allen Dateien im Ordner eingefügt habe. Das Skript kann jeden einzelnen Ordner durchlaufen und auf alle Dateien abzielen und hat sich als sehr nützlich erwiesen

    set the_folder to (choose folder)
renamefilesinside(the_folder)

on renamefilesinside(next_folder)
    tell application "Finder"
        set folder_name to name of next_folder & " "
        set folder_contents to every item of next_folder
        repeat with each_item in folder_contents
            if kind of each_item is "folder" then
                my renamefilesinside(each_item)
            else
                set name of each_item to folder_name & " " & name of each_item
            end if
        end repeat
    end tell
end renamefilesinside

Quelle: https://discussions.apple.com/thread/275167

Jetzt habe ich jedoch einen Teil der Ordnernamen entfernt und möchte, dass ein subtraktiver Effekt auf die Dateien angewendet wird, sodass das Skript die Dateien nimmt, den Namen des übergeordneten Ordners betrachtet und die gemeinsamen Zeichen entfernt.

Leider weiß ich sehr wenig über Apple-Skripte, also hoffe ich, dass dies eine einfache Anpassung ist, die jemand hier vornehmen kann.

Vielen Dank für jede Hilfe, die Sie geben können!

Antworten (1)

Sie können den Dateinamen abrufen, dann das Textelement-Trennzeichen auf den enthaltenden Ordnernamen setzen, dann die Textelemente des Dateinamens in eine Liste einfügen, die das Trennzeichen (den Ordnernamen) ignoriert, und dann das Textelement-Trennzeichen auf zurücksetzen "" leer und den Namen in einen String umwandeln. Dies ist ein SEHR verbreiteter Applescript-Trick.

set the_folder to (choose folder)
renamefilesinside(the_folder)

on renamefilesinside(next_folder)
    tell application "Finder"
        set folder_name to name of next_folder
        set folder_contents to every item of next_folder
        repeat with each_item in folder_contents
            if kind of each_item is "folder" then
                my renamefilesinside(each_item)
            else
                set n to name of each_item
                set AppleScript's text item delimiters to folder_name
                set n to text items of n
                set AppleScript's text item delimiters to ""
                set n to n as string
                set name of each_item to n
            end if
        end repeat
    end tell
end renamefilesinside
Tut mir leid, ich verstehe nicht ganz, was ich mit dem Skript machen muss. Ich hatte gehofft, dass das Skript genauso funktionieren würde wie das ursprüngliche - Sie wählen einfach den Ordner aus, der alle Ordner enthält (ich habe mehrere) und die Dateien in diesen Ordnern werden umbenannt, indem der Ordnername vom Dateinamen subtrahiert wird.
Es gab einige Fehler im Skript in potenziellen Situationen. Ich habe das Skript bearbeitet, um es zu verbessern. Das tut mir leid. Es funktioniert jetzt so wie du es gesagt hast. Sie wählen einen Ordner aus, nachdem Sie das Skript ausgeführt haben, und es löscht dann die Namenszeichenfolge des Ordners aus allen Dateien, die in diesem Ordner enthalten sind.