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

2

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

Im Grunde packe ich eine Reihe von Dateien von 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 in der Gruppe benennt, wenn ich ihn komprimiere. Die zweite Spalte enthält die tatsächlichen Bestellnummern für jede Bestellung. Die dritte Spalte enthält scheinbar willkürlich benannte Ordner, die jeweils eine von einem Kunden hochgeladene Datei enthalten. Daher wird jede Datei, die ein Kunde für eine Bestellung hochlädt, in einen Ordner mit beliebigem Namen und dann in den Ordner mit den Bestellnummern gestellt.

current structure

Ich möchte eine App oder einen Dienst mit Apple Automator erstellen, um die Kundendateien so umzubenennen (und alle Unterordner zu entfernen), wobei sie alle im übergeordneten Ordner gespeichert werden, der nacheinander genannt wird.

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

Hilfe / Einsicht

Becky Piscitelli
quelle
Sind Auftrag# und SomeAutomatedFilename Verzeichnisse? Kannst du die Ausgabe einer Beispiel-ZIP über unzip -l download.zip ... Prost
tink

Antworten:

3

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 Ordner 3587915 in Ihrem Beispiel.

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. Sehr wichtig: Wählen Sie Ihren 3589919 nicht. Wir arbeiten hier nur an einem Ordner. Wenn dies für Sie funktioniert, können Sie die Ordner im Ordner der obersten Ebene 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 zeigen, wie es funktioniert. Sie sollten mit einer Reihe von Ordnern üben, die anfangs keine Rolle spielen. Sie können meine Startaufstellung im ersten Bild und das Ergebnis im zweiten Bild sehen. Die Bildunterschriften (für mich) werden nicht angezeigt.

Bild 1: Automator Service mit leicht modifiziertem AppleScript.

Abbildung 2: Ordner_1, Ordner_2, Ordner_3, Ordner_4 und Ordner_5 enthalten jeweils eine einzige PDF-Datei. Hier wird nur der Inhalt von Ordner_1 angezeigt.

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

Sie können das Skript als App speichern. Sie können das Skript auch 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 einfügen, aber ich bin neu hier und darf nur zwei Bilder, bis ich aktualisiert bin.

Wenn Sie dies mit einem Dienst tun möchten, verwenden Sie fast das gleiche Skript, müssen jedoch den mit der Steuerung angeklickten Ordner übergeben. Anstatt den AppleScript-Schritt "Choose Folder" zu verwenden, weisen Sie Ihren Automator Service an, "den ausgewählten Ordner im Finder zu erhalten" und setzen "the_folder" auf Eintrag 1 der Eingabe. Sehen Sie das erste Bild. Funktioniert hier wie ein Champion!

Automator Service, passing the control-clicked folder

folder_1, folder_2, folder_3, folder_4, and folder_5 each have a single pdf in them. Only folder_1's contents are shown here

This is the result. The subfolders are gone. The files are named after the parent folder.

Christian Boyce
quelle
Vielen Dank, Christian, das funktioniert definitiv und erspart Kopfschmerzen. Ist es möglich, ein Droplet oder einen Dienst so zu erstellen, dass ich den Ordner nicht auswählen muss, aber er gilt für alle Ordner, auf die ich klicken möchte?
Becky Piscitelli
Becky, du bist willkommen. Ich habe meinen ursprünglichen Beitrag bearbeitet, um die Automator-Service-Methode anzuzeigen. Danke an meinen Freund Ben Waldie, der mich daran erinnert hat, wie ich einen Ordner an AppleScript übergeben kann. Stellen Sie diesen Dienst in Automator bereit und er steht Ihnen zur Verfügung, wenn Sie mit der Maus auf einen Ordner klicken.
Christian Boyce
Ordentlich! Ich hätte das mit einem Shell-Skript gemacht. (:
SilverWolf