Scorciatoia da tastiera per sostituire il file nel Finder?

2

Diciamo che ho appena catturato uno screenshot chiamato "screenshot.jpg" e ho una cartella di schermate chiamata "screenshot".

Screenshots
 └ Work.jpg
 └ School.jpg
 └ Misc.jpg

Voglio prendere questo screenshot recentemente catturato e sostituire il file "misc.jpg" all'interno della cartella screenshot. Qual è il modo migliore per farlo? So che posso rinominare il file con il nome del file attualmente all'interno della cartella, copiare + incollarlo nella cartella e quindi scegliere l'opzione "replace file" quando richiesto, ma questo non è l'ideale. C'è una scorciatoia da tastiera o un altro modo rapido per eseguire questa azione?

Nota: questo è solo un caso d'uso di esempio. Sarebbe l'ideale se potessi usare un metodo rapido indipendentemente dal nome del file o dal tipo di file.

    
posta Zachary David Saunders 16.12.2017 - 05:08
fonte

1 risposta

1

Questo piccolo AppleScript eseguirà una schermata e sovrascriverà qualsiasi file selezionato al momento nel Finder.

    # Check that precisely one file is selected 
    set F to the selection of application "Finder" as list
    if (count F) ≠ 1 then return beep

    set F to F's first item as alias

    # Perform a screengrab straight to the clipboard
    # then overwrite the file above with the image
    # data from the clipboard

    do shell script "screencapture -c"
    set screenshot to the clipboard as JPEG picture

    write screenshot to (F as alias)

Non si sposta, copia o cancella; semplicemente lo sovrascrive. Quindi, tenete a mente, questo significa che la data creata rimarrà la stessa, che potenzialmente potrebbe vedere la generazione di una nuova schermata di scrittura su un file immagine creato due anni fa. (La data modificata viene aggiornata come ci si aspetterebbe.)

Come qualcuno ha suggerito, questo tipo di cose funzionerebbe bene come un servizio in Finder , a cui potresti assegnare un collegamento.

Ho iniziato a crearne uno:

Loscriptèmoltosimileaunosopra(eaggiuntoinfondoaquestarispostainunbloccodicodicechepuoicopiare/incollare).Haunpo'digestionedeglierrorienotifiche,datochequestosaràunservizioedèbellorenderlorobusto.Inoltre,nonprendealcunaimmaginedelloschermodisuaspontaneavolontà,inquantounoscreenshoteseguitoquandoilservizioèattivatodovrebbeaverenecessariamenteilFinderafuoco,chepotrebbenonessereloscreenshotdesiderato.

Pertanto,questoserviziopresupponechetuabbiagiàacquisitoloscreenshotechesiainattesanegliAppunti.IlFinderhagiàscorciatoiecheconsentonodiinviaregliscreenshotdirettamentenegliAppunti,quindinonc'èbisognodifarenulladipiù.

HosalvatoilserviziocomeunochiamatoSostituiscifileimmagine,comenoteraichel'inputèspecificamentefileimmagineinFinder.Pertanto,ilserviziononverràattivatoaccidentalmentese,peresempio,èstatoselezionatounfiledell'applicazione.

Oravienevisualizzatonelmenudisceltarapidaognivoltachefaccioclicconilpulsantedestrodelmousesuun'immagineinFinder:

Successivamente,sonoentratoinPreferenzediSistemaperassegnareunascorciatoiadatastiera:

QuestocollegamentositrovanelmenuFindersottoServizi:

Hoscelto^⇧⌘Rperchéèragionevolmentedifficiledapremereaccidentalmente,maèpiuttostoadiacenteallescorciatoiepredefiniteperinviareunoscreenshotdirettamentenegliappunti,ovvero^⇧⌘3e^⇧⌘4,ovverolamanovrafisicatral'assunzioneunoscreenshoteattivandoilserviziounoconvenientedafare.

Felicedidireche,duranteitest,hafunzionatomagnificamente,quindipotreisemplicementetenerlopermestessoperchépossovederecheèabbastanzautile.

Infine,eccoilbloccodicodiceperilflussodilavorodelservizioAutomator:

onrun{input,parameters}#Makesurepreciselyonefileispassedtotheservice#Otherwiseterminatewithabeepif(countinput)isnot1thenreturnbeep#Errorcatchingintheeventthattheclipboard#doesnotcontainimagedatatrysetImageDatatotheclipboardasJPEGpictureonerrorerrMsgnumbererrNo#Terminatescriptwithanotificationreturndisplaynotification¬"No image content found.  Unable to proceed." with title ¬
                "Replace Image File" subtitle ¬
                "Error: clipboard content is the wrong data type"
        end try

        # If the script reaches this point, all must be
        # well so we can try and overwrite the input file
        try
            write ImageData to input
        on error errMsg number errNo
            return display notification ¬
                "Unsuccessful overwriting." with title ¬
                "Replace Image File" subtitle ¬
                ("Error " & errNo as text) & ": " & errMsg
        end try

    end run
    
risposta data 23.12.2017 - 23:39
fonte

Leggi altre domande sui tag