Verifica dell'esistenza di file nascosti in AppleScript

5

Posso verificare se esiste un file utilizzando AppleScript. Ma sto avendo problemi con i file nascosti. C'è un modo speciale per farlo?

set home_path to (path to home folder as text)
set hiddenFile to home_path & ".test"

tell application "Finder"
    if not (exists file hiddenFile) then
        display dialog ".test does not exist."
    end if
end tell
    
posta Fed 21.02.2017 - 17:32
fonte

3 risposte

7

Sostituisci Finder con System Events:

set home_path to (path to home folder as text)
set hiddenFile to home_path & ".test"

tell application "System Events"
    if exists file hiddenFile then
        display dialog ".test does exist."
    else
        display dialog ".test does not exist."
    end if
end tell

e funziona.

    
risposta data 21.02.2017 - 18:29
fonte
4

Puoi anche inline chiamare il comando shell all'interno di AppleScript senza la necessità di creare script bash separati. Ecco un esempio:

set home_path to (path to home folder as text)
set fileName to ".viminfo"
set hiddenFile to home_path & fileName

tell application "Finder"
    if not (exists file hiddenFile) then
        try
            set output to do shell script "[ -f " & quoted form of POSIX path of hiddenFile & " ];"
        on error
            display dialog fileName & " does not exist."
        end try
        display dialog fileName & " does exist."
    end if
end tell

Questo AppleScript usa bash [ -f $PATH ]; per verificare se il file esiste. Utilizza anche try , perché devi "catturare" un errore - se il file non esiste ricevi un errore e lo script viene fermato.

    
risposta data 21.02.2017 - 18:25
fonte
2

Quindi non so come farlo con AppleScript nativo, ma poiché i Mac usano Bash, puoi usare uno script di shell per effettuare la ricerca. Non è l'ideale ma è meglio di niente.

Quindi lo script della shell sta per cd , cambia directory, nella cartella che devi cercare. Quindi eseguirà il comando ls , che elenca i contenuti di una directory. il flag -a su ls dice di elencare gli oggetti nascosti. Gli strumenti di Bash usano un concetto chiamato input / output standard per ottenere input e output di visualizzazione. L'output standard viene visualizzato sullo schermo di default, ma può essere reindirizzato da uno strumento chiamato pipe per andare da qualche altra parte. In questo caso, anziché visualizzare un elenco di tutti i file in una directory, inseriremo tale elenco in uno strumento di ricerca denominato grep . Questa spiegazione è stata alquanto dettagliata ma lo script della shell richiede solo 3 righe (il primo dei quali è probabilmente inutile in questo caso):

#!/bin/bash                                   # define the shell, not really needed because bash is the default shell but good practice
cd /path/to/search/directory                  # cd to the proper place
ls -a | grep "the text you're looking for"    # list all files (including hidden ones) and pipe output into grep, a search tool

Salva questo come qualcosa di logico, come findFile.sh , quindi rendilo eseguibile con questo comando nell'app terminale

chmod +x /path/to/findFile.sh

Quindi ora è pronto per andare, su AppleScript.

Come ho detto, non sono così esperto in AppleScript, ma, a quanto ho capito, avresti eseguito lo script della shell in questo modo

set output to do shell script "/path/to/findFile.sh"

quindi la variabile output conterrà qualsiasi testo trovato da grep. Il tuo test per verificare se il file esiste o meno adesso contiene o meno output .

Sentiti libero di eseguire man grep nel terminale per il manuale grep per vedere di più su come funziona e cosa corrisponde e come abbinare solo i file con determinate estensioni e cose del genere. Forse potresti voler giocare con le pipe in grep per avere un'idea di come funziona.

Speriamo che qualcuno possa venire con una risposta alla tua domanda in AppleScript.

Riferimenti:

risposta data 21.02.2017 - 17:55
fonte

Leggi altre domande sui tag