Macとかの雑記帳

Finderで選択中のアイテムに対して「sudo mv」コマンドを適用し、所有者がシステムであってもアイテムを移動することができるApplescript。MacAppStoreでダウンロードしたアプリを、マウス操作で別フォルダに移動させるのに作ったもの。
システムバンドルのアプリと、後から入れたアプリの保存場所を分けている人は便利かもしれません。

このスクリプトは、以下の処理を実行します。

sudo mv "Finderで選択中のアイテム" "移動先フォルダ"


tell application "Finder"
set selectedItem to the selection as alias
end tell
set aFile to selectedItem as alias

--移動先のフォルダを毎回選択する場合--
set bFolder to choose folder

--フォルダパスを指定する場合--
#set bFolder to alias "Macintosh:Applications"

mvCmd(aFile, bFolder) of me

--ファイルの移動をcommandで実行--
on mvCmd(aFile, bFolder)
set aClass to (class of aFile) as string
set bClass to (class of bFolder) as string

if {aClass, bClass} = {"alias", "alias"} then
set aFilePOSIX to POSIX path of aFile
set bFolPOSIX to POSIX path of bFolder
set shText to "sudo " & "mv " & quoted form of aFilePOSIX & " " & quoted form of bFolPOSIX
try

-- ""の間にログインパスを入力。空欄にすると毎回パスワードを求めてくる--
do shell script shText password "ログインパス" with administrator privileges

on error
display dialog "An Error Occured…" & return & return & "ファイルの移動に失敗しました。" with icon caution
end try
end if
end mvCmd



これをAutomatorでサービスとして保存すると、コンテクストメニューからsudo権限でアイテムを移動できる様になります。

ログインパスの部分に、Macにログインするパスワードを入れて保存すればパスワードを求めてきません。


移動先のフォルダを固定する場合は、下の部分のコメントアウトを外し、赤字部分にフォルダのパスを「:」で区切って記入します。
set bFolder to alias "Macintosh:Applications"


複数選択には対応していません。複数選択した場合は、そのうちの一つしか移動しません。


今回は移動するだけですが、Finderで選択中のアイテムに対してshellScriptを実行できるので、色々と書き換えると面白いことが出来る様になるかもしれません。


参考Link:ファイルのコピーをshell scriptで実行 : Applescriptの穴


スポンサード リンク