AppleScript: Bir klasörü izlemek


2

Kendisine taşınan dosyalar için masaüstünde, ayrıca masaüstünde bir klasörü izlemek için bir AppleScript uygulamasına ihtiyacım var.

Şimdiye kadar:

global folderSpool
tell application "Finder" to set folderSpool to folder "Spool" of desktop

on adding folder items to folderSpool after receiving the_files
    repeat with each_file in the_files
        set theDialogText to "File is: " & (each_file) & "."
        display dialog theDialogText
    end repeat
end adding folder items to

Komut dosyasını bir uygulama olarak dışa aktardığımda şunu ayarlıyorum: "Çalışma işleyicisinden sonra açık kal." Daha sonra uygulamayı açıp çalışmaya devam ettim.

Ancak, dosyaları "Biriktirme" klasörüne taşıdığımda hiçbir şey olmuyor.

on idleSeçeneği denedim , ancak dosyalar klasöre taşındığında yapmak yerine diyalogdan sonra diyalog oluşturmaya devam etti.

Herhangi bir fikir?


1
İzlemek istediğiniz hedef Klasöre bir Klasör Eylemi ayarlamamanızın herhangi bir nedeni var mı?
user3439894 21:17

En az iki neden: 1. Nasıl olduğunu bilmiyorum; 2. eğer ek öğeler yaratmayı ve onları klasörlere (eğer şüpheliyim olduğundan şüpheliyim) yerleştirmeyi içeriyorsa, aklımızdaki kullanım göz önüne alındığında pratik değildir.
Wayne Smallman

1
Bir klasörü düz bir AppleScript uygulamasından izleyebileceğinize inanmıyorum ve bunun bir Klasör Eylemi olarak ayarlanması gerekecek. Bir Klasör Eylemi oluşturabilir ve bunu bir Automator Klasör Eylemi iş akışı kullanarak veya Finder'daki Servisler bağlam menüsünden Komut Dosyası Düzenleyici ve Klasör Eylemi Ayarı ... kullanarak, yerel olarak iki farklı yoldan Hedef Klasöre uygulayabilirsiniz. Her iki yöntemin de AD ve internette nasıl yapılacağı gösterilmiştir.
Aşağıdakileri

Yanıtlar:


1

Kullanmakta olduğunuz komut, "klasör öğesi eklerken", klasör eylemlerine özgüdür, bu nedenle klasör dışı bir eylem komut dosyasında çalışmaz. Diğerleriyle bir klasör eyleminin onu ele almanın en iyi yolu olduğuna katılıyorum, ancak bunu gerçekten yapmak istemiyorsanız, klasörün içeriğini sorgulayan ve en son çalıştığı tarihle karşılaştıran açık kalan bir uygulama oluşturabilirsiniz. ve farklı dosyaları görüntüler. RunInterval özelliğini, tercih ettiğiniz frekansta çalışacak şekilde değiştirin.

Not: Basitlik için, yalnızca biriktirme klasörüne eklenen dosyaları kontrol etmek için yazdım. Ayrıca, aşağıdaki koddaki ikinci bölümü kopyalayarak ve spoolFiles'te döngü uygulayarak ve currentFiles'te olup olmadıklarını görerek kaldırılan dosyaları kontrol etmek için ince ayar yapabilirsiniz.

Aşağıda açık kalan bir uygulama olarak AppleScript Kodu:

property spoolFiles : {}
property currentFiles : {}
property runInterval : 5 -- interval is in seconds
global folderSpool

on idle
    tell application "Finder"
        set folderSpool to folder "Spool" of desktop
        if (count of spoolFiles) is 0 then set spoolFiles to name of every file of folderSpool
        set currentFiles to name of every file of folderSpool
    end tell

    set changedFiles to {}--Reverse and repeat this section to check for missing files
    repeat with i from 1 to count of currentFiles
        if currentFiles's item i is not in spoolFiles then
            set changedFiles's end to currentFiles's item i
        end if
    end repeat

    repeat with each_file in changedFiles
        set theDialogText to "File is: " & (each_file) & "."
        display dialog theDialogText
    end repeat
    set spoolFiles to currentFiles --important to update the spoolFiles so only new files will get displayed going forward.
    return runInterval
end idle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.