更新: のAppleScript:何かがディレクトリやファイルがあるかどうかを確認する方法
以下ソリューションを使用すると、Finderから選択した項目のリストを持っていると言います。いくつかのファイル、フォルダ、様々なバンドル、そして選択に含まれるいくつかのアプリケーションがあるとします。
ここでは、(UNIX用語で)ディレクトリのアイテムのみが、であるとします。私。あなたは、端末内のcd
にできるアイテムしか必要ではありません。
あなたは
を各項目のkind
プロパティをチェックし、それが「フォルダ」に等しいかどうかを確認し、彼らは実際にはあるけれども、それは、アプリケーションバンドルまたは他のバンドル/パッケージのために動作しません「フォルダ」(ディレクトリ)することができますアイテムが実際のファイルオブジェクト(エイリアスではない)である場合、各アイテムのclass
プロパティをチェックすることができます。バンドルは現在「ドキュメントファイル」インスタンスであり、アプリケーションは「アプリケーションファイル」インスタンスです。
class
プロパティをチェックすることができないため、実際のファイルオブジェクトではなくエイリアスのリストしかないと悪化します。それは常に「エイリアス」とだけ言います。
私が考えることができる唯一の解決策は、各項目のPOSIXパスを取得して、スラッシュが末尾にあるかどうかを確認するか、別の言語で書かれたスクリプトにそのパスを送信するか何かがディレクトリかどうか。
どちらのアイデアも私にとって狂っているようです。末尾のスラッシュを確認するのは非常にハッキーで壊れやすく、すべてのスクリプトを別のスクリプトに渡すことは過度の過労です。
更新:何Asmusは以下示唆AppleScriptのは、独自のにそれを把握するための方法はありませんようだと、良い解決策
のみ
ように見えるん:
do shell script "file -b " & filePosixPath
これは、フォルダ、バンドル、アプリケーション、パッケージなどの文字列 "directory"を返すでしょう。
ディスクについては、 "スティッキディレクトリ"を返します。
は、簡単なAppleScriptの解決策がありますかなりよく
on isDirectory(someItem) -- someItem is a file reference
set filePosixPath to quoted form of (POSIX path of (someItem as alias))
set fileType to (do shell script "file -b " & filePosixPath)
if fileType ends with "directory" then return true
return false
end isDirectory
まあ、I'dが最も簡単な解決策があると言いますPOSIXパスをコマンドラインツール 'file'に渡します。 'file -b/Applications/Safari.app'は単に" directory "を返します。 'do shell script'ループにそれを組み込むのは簡単であるはずです。 – Asmus
@Asmus:あなたはおそらく正しいでしょう。私が質問を書いた後、私はフル・シェル・スクリプトではなく、簡単なシェル・コマンドを実行できることに気付きました。それでも、何かがディレクトリであるかどうかといった基本的なことを理解するために、AppleScriptの外に出なければならないのは奇妙なことです。私は1日かそこらの質問を残しておきますし、その間にあなたは答えとしてコメントを書くことができますので、あなたはポイントを得ることができます:) – Flambino
@Flambino私はあなたの良い質問をupvoteできません。投票する! :( – fireshadow52