Erstellen Sie programmgesteuert einen Alias ​​mit demselben Namen und Zeitstempel neu

Lassen Sie uns ein Dienstprogramm zur Stapelverarbeitung von Legacy-Alias-Dateien entwickeln.

Implementiert als:

  • Finder-Dateidienst,
  • Automator-Workflow,
  • Applescript,
  • Shell-Skript,
  • oder was auch immer das für die Arbeit ist.

Für jede Datei im Batch sollte dies geschehen:

  1. Ist die Datei ein Alias? (vermeiden Sie andere Dateitypen, die durch Benutzerfehler bereitgestellt werden)
  2. Holen Sie sich den Dateipfad, Dateinamen, Zeitstempel, Label, Tags.
  3. Lösche es.
  4. Erstellen Sie es im ursprünglichen Dateipfad mit dem ermittelten Dateinamen, Zeitstempel, Label und Tags neu.

Nachtrag: Ich habe einen Fehlerbericht an Apple gesendet, siehe unten. Vielleicht hat Apple eine Lösung. Aber ich denke, einige erfahrene AppleScripter hier können innerhalb von Minuten eine Lösung finden. Wäre cool, wenn wir hier eine Lösung finden und diese der gesamten macOS-Community anbieten.


Fehlerbericht an Apple, eingereicht am 10.01.2017

Finder / HFS+ / Dateisystem – Aktualisierung älterer Alias-Dateien auf reduzierte Dateigröße mit Batch-Prozess

EIN LANGZEITFEHLER WURDE ZUM GLÜCK BEHOBEN:

In macOS Sierra wurde die Dateigröße von Aliasen schließlich drastisch reduziert, von mehreren Megabyte in Mac OS X 10.7-10.11-Systemen auf nur noch etwa 1 KB jetzt in macOS Sierra 10.12. (Einfach, indem die Icon-Ressourcen weggelassen werden, die sowieso meistens überflüssig waren, da sie nur eine Kopie eines generischen Dateityp-Icons waren.)

BITTE BIETEN SIE AUCH EINE LÖSUNG FÜR DEN BUG LEGACY AN:

Je nachdem, wie stark Aliase auf einem System verwendet werden, besteht das Potenzial, für einige Benutzer mehrere GB einzusparen.

Ich schlage Apple vor, einen Batch-Prozess zur Reduzierung der Dateigröße von Legacy-Alias-Dateien anzubieten. Mit einer Option, die ursprünglichen Zeitstempel der Aliase beizubehalten, da sie in einigen Anwendungsfällen einen kritischen Informationswert haben können.

Dann können Sie eine einfache Finder-Suche durchführen, die Dateien Ihrer Wahl auswählen (alle oder nur bestimmte) und sie dann per Drag & Drop auf die Stapelverarbeitungs-App oder den Dateidienst oder den Finder-Menübefehl ziehen.

DERZEITIGE WORKAROUND MIT QUICKLOOK FUNKTIONIERT NUR TEILWEISE

  1. Finder > Neues Fenster (cmd-N) > Suchen (cmd-F)
  2. Die Suchkriterien werden angezeigt, stellen Sie sie wie folgt ein:
    • "Art" ist "Andere", geben Sie "Alias" ein
    • Sie erhalten ein Finder-Suchergebnisfenster.
  3. Als Liste anzeigen und nach Größe sortieren.
    • Dann haben Sie die Übeltäter mit der höchsten Dateigröße an der Spitze.
  4. Wenn Sie eine Datei mit der LEERTASTE QuickLook suchen, erfolgt keine Alias-Erstellung.
  5. Führen Sie „Datei > Original anzeigen“ (cmd-R) für die ausgewählte Datei aus.
  6. Im neu geöffneten Fenster QuickLook der Alias-Dateien mit SPACE.

Dann werden bestimmte Alias-Dateien neu erstellt. Aber nicht alles!

Funktioniert, aber nur manchmal: PDF, JPEG, ZIP, wenn BetterZip QuickLook-Plugin der Handler ist.

Von diesen werden nicht alle Aliase aufgefrischt.

Es scheint auch von der allgemeinen oder individuellen zugehörigen Anwendung der Datei abzuhängen (Finder-Einstellung "Öffnen mit", Uniform Type Identifier (UTI), TYPE/CREATOR-Ressourcenzweig) und welches QuickLook-Plugin den Dateityp verarbeitet.

Eine neu erstellte Datei hat eine drastisch reduzierte Dateigröße (ca. 1 KB). Leider verliert es seinen ursprünglichen Zeitstempel, erhält aber den aktuellen (entspricht /usr/bin/touch). Ich würde gerne den Alias-Zeitstempel beibehalten.

Wenn es Ihnen nichts ausmacht, dass das Änderungsdatum Ihres Alias ​​aktualisiert wird, solange das Erstellungsdatum des Alias ​​noch erhalten ist, lesen Sie meine Frage Recreate old aliases in bulk to reduziert their file size, keep their name and creation date . Es hat eine einfachere Lösung als die von Ihnen beschriebene Quick Look-Methode.

Antworten (1)

Erstellen Sie einen Dienst mit Automator – Getestet auf macOS Sierra

  1. Offen/Applications/Automator.app
  2. Datei > Neu (cmd-N)
    • Wählen Sie einen Dokumenttyp aus: „Service“.
  3. Dienst empfängt ausgewählt: "Dateien oder Ordner" im "Finder".
  4. Navigieren Sie im linken Bereich zu: Aktionen > Bibliothek > Dienstprogramme > AppleScript ausführen.
    • Ziehen Sie das Element "AppleScript ausführen" aus dem Bibliotheksbereich auf der linken Seite in den Quellcodebereich auf der rechten Seite.
  5. Löschen Sie den vorausgefüllten Inhalt vollständig. Fügen Sie den folgenden Quellcode ein:

AppleScript-Quellcode

use framework "Foundation" -- Cocoa-AppleScript

on run {input, parameters}
    repeat with thisItem in input
        tell application "Finder"
            if kind of thisItem is "Alias" then -- alias file only
                set parentPath to container of thisItem -- get the folder of this alias
                set {label index:l, comment:c, modification date:m, creation date:cr, original item:origPath, name:n} to properties of (item thisItem)
                if origPath is not missing value then -- not a breaking alias
                    set tagsList to (my tagsFor:(POSIX path of thisItem)) -- get the tags of the alias file (call an AppleScriptObjC handler)
                    delete thisItem -- move this alias to the trash

                    -- ** create an alias file **
                    set newAliasFile to make new alias at parentPath to origPath with properties {comment:c, creation date:cr, original item:origPath, name:n}
                    -- ** set the label ** (0 = no label)
                    if l is not 0 then set label index of newAliasFile to l
                    -- ** set  the tags ** ({} = no tag) 
                    if tagsList is not {} then (my setTags:tagsList forPath:(POSIX path of (newAliasFile as string))) -- call an AppleScriptObjC handler
                    -- ** change the modification date **
                    set modification date of newAliasFile to m
                end if
            end if
        end tell
    end repeat
end run

on tagsFor:posixPath -- Cocoa-AppleScript handler 
    set fileURL to current application's |NSURL|'s fileURLWithPath:posixPath
    set {theResult, theTags} to fileURL's getResourceValue:(reference) forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
    if theTags = missing value then return {} -- no tags
    return theTags as list
end tagsFor:

on setTags:tagList forPath:posixPath -- Cocoa-AppleScript handler
    set fileURL to current application's |NSURL|'s fileURLWithPath:posixPath
    fileURL's setResourceValue:tagList forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
end setTags:forPath:
  1. Datei > Speichern (cmd-S): Geben Sie ihm einen Namen wie „Alias-Erstellung“.
  2. Öffnen Sie Systemeinstellungen > Tastatur > Verknüpfungen > Dienste > Dateien und Ordner > Alias-Erstellung, oder wie auch immer Sie es benannt haben.
    • Weisen Sie ihm eine Verknüpfung zu. Da cmd-L verwendet wird, um einen Alias ​​​​zu erstellen (L wie in "link"), habe ich ihm cmd-alt-ctrl-L zugewiesen.
  3. Wählen Sie eine oder mehrere Legacy-Aliasdateien aus und verarbeiten Sie sie.
    • Mit Ihrem Shortcut cmd-alt-ctrl-L.
    • oder über das Hauptmenü: Finder > Dienste > Dateien und Ordner > Alias-Erstellung.

Hinweis : Der Batch-Prozess ist sehr transparent und Fehler können korrigiert werden. Die gelöschten Aliase werden in Ihren Papierkorb verschoben. Sollten Sie einen Fehler gemacht haben, wählen Sie die betreffende Alias-Datei aus dem Papierkorb und führen Sie Finder > Put back (cmd-backspace) aus. Dadurch wird die Datei wieder in ihren vorherigen übergeordneten Ordner verschoben und der übergeordnete Ordner in einem neuen Fenster geöffnet. Dann hat man den neu erstellten Alias ​​und den Original-Alias ​​mit dem Zusatz „copy“ nebeneinander und kann ggf. Korrekturen vornehmen.

• Eine wunderbare, solide funktionierende Lösung! Danke schön! • Ich habe es gründlich getestet: Die verarbeiteten Aliase werden erfolgreich neu erstellt, wobei die erforderlichen Eigenschaften intakt sind, nämlich: Zeitstempel, mehrere Labels, mehrere Tags. Mehrere Aliase als Eingabe funktionierten gut. Falsche Dateitypen (≠Alias) in der Eingabeauswahl wurden nicht verarbeitet. • Um diese Lösung vielen Benutzern so zugänglich wie möglich zu machen, habe ich eine sehr explizite Schritt-für-Schritt-Anleitung geschrieben und werde Ihre Antwort entsprechend bearbeiten. Wenn Sie damit nicht einverstanden sind, sagen Sie es mir bitte, und ich schreibe es in eine separate Antwort.
In macOS 10.14 heißt der Typ des zu erstellenden Automator-Dokuments jetzt „Quick Action“. Außerdem empfehle ich, im Automator-Workflow einen Kommentar mit einem Link zu dieser Frage zu erstellen, damit Sie sich daran erinnern können, woher das AppleScript stammt. Sehen Sie , wie Sie einen Kommentar in Automator erstellen .
Unter macOS 10.14 Mojave kann dieses AppleScript das Änderungsdatum nicht beibehalten – die neuen Aliase haben ihr Änderungsdatum auf die aktuelle Uhrzeit gesetzt. Angesichts der Tatsache, dass dieses AppleScript derzeit das Änderungsdatum nicht beibehält, ist meine Antwort auf Alte Aliase in großen Mengen neu erstellen, um ihre Dateigröße zu reduzieren, ihren Namen und ihr Erstellungsdatum beizubehalten, äquivalent und einfacher durchzuführen.