忍者ブログ
MASTER →  ADMIN / NEW ENTRY / COMMENT
現代魔法(nearly equal 情報技術)を勉強中な人のメモ(チラシの裏)
/ 2024/04/26 (Fri) / 編集
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

/ 2008/05/14 (Wed) / 編集
右クリックメニューからフォルダをTerminalで開けるプラグインを作ってみた。

OpenDir

これを「ファイル」->「プラグインとして保存」->「Finder」とするとworkflowが「/Users/ユーザ名/Library/Workflows/Applications/Finder」に保存されて右クリックメニューから呼び出せるようになるっぽい。
でもってフォルダを選択したあと「右クリック」->「Automator」->「保存したときのファイル名」で実行するとTearminalが起動(すでに起動してる場合は新規Window)して選択していたフォルダまで勝手にcdしてくれる。

画像じゃわからないAppleScriptのソースコードはこれ
on run argv
--「:」を「/」に置換
set dirpath to my replaceTxt(item 1 of argv as string, ":", "/")
--display dialog dirpath as Unicode text

--Terminal.app
tell application "Terminal"
--ディレクトリを移動
do script "cd \"/Volumes/" & dirpath & "\" "
--前面に表示
activate
end tell
end run

--文字列置換専用関数
--[Apple Scriptの覚え書き]
--http://www.kiwi-us.com/~mizusawa/penguin/html_hint/applescript/script_memo.html#Delimit
on replaceTxt(myText, searchTxt, replaceTxt)
--デリミタを保存しておく
set oldDel to AppleScript's text item delimiters
--渡されたサーチワードをデリミタにする
set AppleScript's text item delimiters to searchTxt
--分解して
set myText to every text item of myText
--渡された置換ワードをデリミタにする
set AppleScript's text item delimiters to replaceTxt
--つなぐ
set myText to myText as string
--デリミタを元に戻す
set AppleScript's text item delimiters to oldDel
return myText
end replaceTxt
文字列置換の関数(replaceTxt)は[Apple Scriptの覚え書き]を参考にさせてもらいました。

ただこれ、みてのとおり例外処理をしてないのでファイルを選択していてもcdしようとします、かなしいですね、、、
でも実はアプリケーションは問題なくcdできたりw


補足として、Finderのpluginとしてではなくワークフローとして単体で動かしたい時は「選択されたFinder項目を取得」くらいを上につけるといいみたい。
ちなみに「選択されたFinder項目を取得」をつけたままプラグイン化すると「cd ~/」をやりたいのに「cd ~/~/」になってしまう、なぜだ?

拍手[0回]

PR
忍者ブログ [PR]