Wie kann das Umbenennen einer Datei basierend auf ihrem übergeordneten Ordner automatisiert werden?

Ich habe viel recherchiert und kann keine einfache Lösung zum Umbenennen einer Datei nach ihrem übergeordneten Ordner finden.

Im Grunde komprimiere ich eine Reihe von Dateien aus einem Online-Dateimanager und erhalte sie in einer lächerlichen Struktur. (siehe unten) Die erste Spalte ist der extrahierte übergeordnete Ordner, der sich nach dem letzten Ordner im Satz benennt, wenn ich ihn komprimiere. Die zweite Spalte enthält die tatsächlichen Bestellnummern für jede Bestellung. Die dritte Spalte sind scheinbar willkürlich benannte Ordner, die jeweils EINE vom Kunden hochgeladene Datei enthalten. Jede Datei, die ein Kunde für eine Bestellung hochlädt, wird also in einen zufällig benannten Ordner und dann in den Bestellnummernordner verschoben.

aktuelle Struktur

Ich möchte eine App oder einen Dienst mit Apple Automator erstellen, um die Kundendateien wie folgt umzubenennen (und alle Unterordner loszuwerden) und sie alle im übergeordneten Ordner mit dem sequenziellen Namen belassen.

3587915_1.PDF
3587915_2.PDF
3587915_3.PDF
3587915_4.PDF
3587933_1.PDF
3587933_2.PDF

irgendeine Hilfe/Einsicht?

Sind Order# und SomeAutomatedFilename Verzeichnisse? Können Sie die Ausgabe einer Beispiel-ZIP-Datei per unzip -l downloaded.zip posten ... prost

Antworten (1)

Sie können dies mit einem AppleScript tun. Verwenden Sie den Skripteditor im Ordner „Dienstprogramme“. Hier ist ein Skript, das ich gerade für Sie geschrieben habe. Es funktioniert jeweils nur für einen Ordner – nicht für den Ordner der obersten Ebene, sondern für den in Ihrem Beispiel 3587915.

Wenn Sie dieses Skript ausführen, werden Sie aufgefordert, einen Ordner auszuwählen. In diesem Beispiel würden Sie 3587915 öffnen und dann auf „Auswählen“ klicken. Ganz wichtig: Wählen Sie nicht Ihre 3589919. Wir arbeiten hier immer nur an einem Ordner. Wenn dies für Sie funktioniert, können wir erweitern, um die Ordner im Ordner der obersten Ebene zu durchlaufen.

tell application "Finder"
    set the_folder to choose folder
    set the_folder_name to name of the_folder
    set the_subfolders to every folder in the_folder
    repeat with I from 1 to count of the_subfolders
        set name of every file of item I of the_subfolders to the_folder_name & "_" & I & ".pdf"
        move every file of item I of the_subfolders to the_folder
    end repeat
    --
    -- optionally delete the subfolders
    delete every folder in the_folder -- put two dashes in front of this line to comment it out
end tell

Hier sind Screenshots, die Ihnen zeigen, wie es funktioniert. Sie sollten zunächst an einer Reihe von Ordnern üben, die keine Rolle spielen. Auf dem ersten Bild seht ihr meine Startaufstellung und auf dem zweiten das Ergebnis. Die Beschriftungen auf den Bildern werden (für mich) nicht angezeigt, also sollten sie Folgendes sein:

Bild 1: Automator Service, mit leicht modifiziertem AppleScript.

Bild 2: Ordner_1, Ordner_2, Ordner_3, Ordner_4 und Ordner_5 enthalten jeweils ein einzelnes PDF. Hier werden nur die Inhalte von Ordner_1 angezeigt.

Bild 3: Das ist das Ergebnis. Die Unterordner sind weg. Die Dateien werden nach dem übergeordneten Ordner benannt.

Sie können das Skript als App speichern. Oder Sie können das Skript innerhalb eines Schritts in Automator ausführen, da Automator ein AppleScript ausführen kann. Das ist im Abschnitt „Dienstprogramme“ von Automator, „AppleScript ausführen“. Ich würde ein Bild hinzufügen, aber ich bin neu hier und darf nur zwei Bilder machen, bis ich aktualisiert werde.

Wenn Sie dies mit einem Dienst tun möchten, verwenden Sie fast das gleiche Skript, müssen jedoch den bei gedrückter Strg-Taste angeklickten Ordner übergeben. Anstatt den AppleScript-Schritt „Choose Folder“ zu verwenden, weisen Sie Ihren Automator-Dienst an, „ausgewählten Ordner im Finder zu empfangen“ und setzen „the_folder“ auf Element 1 der Eingabe. Siehe das erste Bild. Arbeitet hier wie ein Weltmeister!

Automator-Dienst, der den bei gedrückter Strg-Taste angeklickten Ordner übergibt

Ordner_1, Ordner_2, Ordner_3, Ordner_4 und Ordner_5 enthalten jeweils ein einzelnes PDF.  Hier werden nur die Inhalte von Ordner_1 angezeigt

Das ist das Ergebnis.  Die Unterordner sind weg.  Die Dateien werden nach dem übergeordneten Ordner benannt.

Vielen Dank Christian, das funktioniert definitiv und erspart eine Menge Kopfschmerzen. Ist es möglich, es zu einem Droplet oder einem Dienst zu machen, sodass ich den Ordner nicht auswählen muss, aber es gilt für alle Ordner, auf die ich bei gedrückter Strg-Taste klicke?
Becky, gerne geschehen. Ich habe meinen ursprünglichen Beitrag bearbeitet, um die Automator Service-Methode zu zeigen. Danke an meinen Freund Ben Waldie, der mich daran erinnert hat, wie man einen Ordner an AppleScript übergibt. Machen Sie diesen Dienst in Automator und er steht Ihnen jederzeit zur Verfügung, wenn Sie bei gedrückter Strg-Taste auf einen Ordner klicken.
Sauber! Ich hätte das mit einem Shell-Skript gemacht. (:
@SilverWolf, ich wollte gerade ein Shell-Skript-Äquivalent posten, als ich Ihren Kommentar sah. Wenn Sie es also als Antwort posten möchten, werde ich es verschieben.