AppleScript yolunu Terminal tarzı bir yola nasıl değiştirebilirim?


11

Automater'de oluşturduğum özel bir Hizmetim var (OS X 10.6.5 kullanıyorum). Hizmet, bir kabuk komut dosyası yürüten bir AppleScript yürütür. İşte AppleScript:

on run {input, parameters}
    -- do shell script "/usr/bin/find " & input & " -type f -name .DS_Store -delete -print"
    display alert "Path: " & input
end run

Sorun şu ki, Servis tarafından geçirilen yol (değişkende input) şöyle görünür:

Macintosh HD:Users:Matthew:Documents:Programming:Apple Scripts:

Komutun düzgün çalışması için yolun aşağıdaki gibi görünmesi gerekir:

Macintosh\ HD/Users/Matthew/Documents/Programming/Apple\ Scripts/

Peki, birinci yolu ikinci yola çevirmenin bir yolu var mı? Bunu halleden çekirdek bir işlev umuyordum. Ama regex / find / replace / etc bir tür işe yarayacağını varsayalım? HTML / CSS / Javascript / PHP ile tanışıyorum, Cocoa / AppleScript / C ile değil. Herhangi bir yön veya öneri harika olurdu!

Yanıtlar:



6

Tamam ... bu fark ettiğimden daha kolaydı. Bazı Google'lardan sonra, burada ihtiyacım olan POSIX path ofkomut. Bu, belirli bir yolu, Terminal'de göreceğiniz / kullanacağınız yol türü olan Unix stil yoluna dönüştürür. Yani:

POSIX path of input

Bana şöyle bir yol verir:

/Users/Matthew/Documents/Programming/Apple Scripts/

Görünüşe /göre, sabit sürücü adı yerine yolun başında bir a ihtiyacınız var . Ancak, \yoldaki boşluklardan kaçmaz (veya özel karakterleri işlemez). Diğer Cevap burada bahseder gibi Yani, tırnak (yolu yerleştirmek gerekir "ya 'anlamıyla yorumlanmalıdır bu boşluk (ya da özel karakterler) için sırayla). Bunu kullanarak başarırsınız quoted form of. İşte burada:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'

2
/Yolun başında önyükleme birimi. Diğer sabit sürücüler altında/Volumes/
Josh
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.