AppleScript名:指定フォルダをtarでまとめる |
set a to choose folder set b to tarFolder(a) of me –指定フォルダをtarでまとめる on tarFolder(a) set anAlias to a as alias tell application "Finder" set aParent to parent of anAlias set aFolName to name of anAlias end tell set aParent to aParent as alias set preCMD to "cd " & quoted form of POSIX path of aParent set tarCMD to "tar cvf " & quoted form of (aFolName & ".tar") & " " & quoted form of (aFolName & "/") try set aRes to do shell script (preCMD & " && " & tarCMD) on error return false end try tell application "Finder" set tarAlias to ((aParent as string) & aFolName & ".tar") as alias set tarEx to exists of tarAlias end tell if tarEx = true then return tarAlias else return false end if end tarFolder |
タグ: 10.13savvy
指定のtarアーカイブを展開する
AppleScript名:指定のtarアーカイブを展開する |
set a to choose file with prompt ".tarファイルを指定してください" set b to extractTar(a) of me –指定tarアーカイブを展開する on extractTar(a) set anAlias to a as alias tell application "Finder" set aParent to parent of anAlias set aFileName to name of anAlias end tell set aParent to aParent as alias set preCMD to "cd " & quoted form of POSIX path of aParent set tarCMD to "tar xf " & quoted form of (aFileName) try set aRes to do shell script (preCMD & " && " & tarCMD) on error return false end try set newName to text 1 thru -5 of aFileName –展開後の、".tar"を除去した名前 set extractFol to (aParent as string) & newName & ":" try return (extractFol as alias) on error return false end try end extractTar |
テキストをhexdump v4
AppleScript名:テキストをhexdump v4 |
— Created 2015-01-24 by Shane Stanley — Modified 2015-01-26 by Takaaki Naganoya use AppleScript version "2.4" use scripting additions use framework "Foundation" set aStr to "あいうえお" set theNSString to current application’s NSString’s stringWithString:aStr set aList to hexDumpString(theNSString) of me on hexDumpString(theNSString) set theNSData to theNSString’s dataUsingEncoding:(current application’s NSUTF8StringEncoding) set theString to (theNSData’s |description|()’s uppercaseString()) –Remove "<" ">" characters in head and tail set tLength to (theString’s |length|()) – 2 set aRange to current application’s NSMakeRange(1, tLength) set theString2 to theString’s substringWithRange:aRange –Replace Space Characters set aString to current application’s NSString’s stringWithString:theString2 set bString to aString’s stringByReplacingOccurrencesOfString:" " withString:"" set aResList to splitString(bString, 2) –> {"E3", "81", "82", "E3", "81", "84", "E3", "81", "86", "E3", "81", "88", "E3", "81", "8A"} return aResList end hexDumpString –Split NSString in specified aNum characters on splitString(aText, aNum) set aStr to current application’s NSString’s stringWithString:aText if aStr’s |length|() ≤ aNum then return aText set anArray to current application’s NSMutableArray’s new() set mStr to current application’s NSMutableString’s stringWithString:aStr set aRange to current application’s NSMakeRange(0, aNum) repeat while (mStr’s |length|()) > 0 if (mStr’s |length|()) < aNum then anArray’s addObject:(current application’s NSString’s stringWithString:mStr) mStr’s deleteCharactersInRange:(current application’s NSMakeRange(0, mStr’s |length|())) else anArray’s addObject:(mStr’s substringWithRange:aRange) mStr’s deleteCharactersInRange:aRange end if end repeat return (current application’s NSArray’s arrayWithArray:anArray) as list end splitString |
POSIX pathからAliasへの戻し方(解説つき)
AppleScript名:POSIX pathからAliasへの戻し方(解説つき) |
set a to choose folder log {"alias", a} –> (*alias, alias Cherry:Users:me:Desktop:*) set aP to POSIX path of a log {"POSIX path", aP} –> (*POSIX path, /Users/me/Desktop/*)–shell commandに渡すときにはパスにquoted form ofを付ける必要アリ。Cocoaに渡すときにはquoted form ofは不要 set aF to POSIX file aP log {"file", aF} –> (*file, file Cherry:Users:me:Desktop:*) set anAlias to aF as alias log {"alias", anAlias} –> (*alias, alias Cherry:Users:me:Desktop:*) |
ファイルパスの階層とリストとの相互変換
AppleScript名:ファイルパスの階層とリストとの相互変換 |
— Created 2016-11-07 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aStr to current application’s NSString’s stringWithString:"/Users/maro/Desktop/aTEST.scpt" set aList to aStr’s pathComponents() as list –> {"/", "Users", "maro", "Desktop", "aTEST.scpt"} set bList to {"/", "Users", "maro", "Desktop", "aTEST.scpt"} set bStr to (current application’s NSString’s pathWithComponents:bList) as string –> "/Users/maro/Desktop/aTEST.scpt" |
指定のパスのファイル名をUUIDにして拡張子を付け替える
AppleScript名:指定のパスのファイル名をUUIDにして拡張子を付け替える |
— Created 2017-09-13 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" property NSString : a reference to current application’s NSString property NSUUID : a reference to current application’s NSUUID set aFile to POSIX path of (choose file of type {"public.html"}) set aRes to changeFileNameWithUUID(aFile, "pdf") of me on changeFileNameWithUUID(aFile, newExt) set thePath to NSString’s stringWithString:aFile set path1 to thePath’s stringByDeletingLastPathComponent() set theName to NSUUID’s UUID()’s UUIDString() set path2 to (path1’s stringByAppendingPathComponent:theName)’s stringByAppendingPathExtension:newExt return path2 end changeFileNameWithUUID |
POSIX pathからファイル名と親フォルダを抽出
AppleScript名:POSIX pathからファイル名と親フォルダを抽出 |
— Created 2016-05-25 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set targPath to "/20160524/IMG_1198.JPG" set aPath to current application’s NSString’s stringWithString:targPath set fileName to (aPath’s lastPathComponent()) as string –> "IMG_1198.JPG" set parentFol to (aPath’s stringByDeletingLastPathComponent()) as string –> "/20160524" |
指定ファイルの拡張子を取得する
指定ファイルの拡張子を取得するAppleScriptです。
純粋にパス文字列から拡張子を取得する方法(テキストを逆順に変換してピリオドに遭遇するところまでを拡張子とみなす)などもありますが、それは当時の環境(AppleScript Studio)でエラーの出にくい処理方法を選択したものでした。
FinderやSystem Eventsの機能を用いて拡張子を取得するのが一番手軽ではあるのですが、macOS 10.14以降の環境ではこの程度でもアプリケーションの機能を呼び出すと認証ダイアログが(初回のみですが)表示されます。Cocoaの機能呼び出しが手軽にできるので、些細な処理でもよく呼び出して使っています(個人的に)。
Mac App Storeに出すアプリケーションの内部で、ファイルの拡張子を求めるためだけにFinderやSystem Eventsのコントロールを行おうとするのはリジェクトの原因になります。そういう場合には純粋に文字列処理するか、Cocoaの機能を用いることになるでしょう。
AppleScript名:指定ファイルの拡張子を取得する |
use AppleScript version "2.4" use scripting additions use framework "Foundation" set a to choose file set aPath to POSIX path of a set pathString to current application’s NSString’s stringWithString:aPath set newPath to (pathString’s pathExtension()) as string –> "jpg" |
AppleScript名:ファイルから拡張子を取得(Finder) |
set aFile to choose file
tell application "Finder" set aExt to name extension of aFile end tell |
AppleScript名:ファイルから拡張子を取得(System Events) |
set aFile to choose file
tell application "System Events" set aExt to name extension of aFile end tell |
指定ファイルのフルパスから拡張子を削除した文字列を取得する
AppleScript名:指定ファイルのフルパスから拡張子を削除した文字列を取得する |
use AppleScript version "2.4" use scripting additions use framework "Foundation" set a to choose file set aPath to POSIX path of a set pathString to current application’s NSString’s stringWithString:aPath set newPath to pathString’s stringByDeletingPathExtension() –> (NSString) "/Users/me/Desktop/aTest" |
ファイル名の文字列から拡張子を削る
AppleScript名:ファイル名の文字列から拡張子を削る |
use AppleScript version "2.4" use scripting additions use framework "Foundation" set aPath to "aTest.test" set pathString to current application’s NSString’s stringWithString:aPath set newPath to pathString’s stringByDeletingPathExtension() as string –> "aTest" |
POSIX Pathから拡張子を外して、別の拡張子に付け替える
AppleScript名:POSIX Pathから拡張子を外して、別の拡張子に付け替える |
— Created 2017-11-05 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aPath to "/Users/me/Desktop/test2.scpt" set pathString to current application’s NSString’s stringWithString:aPath set newPath to ((pathString’s stringByDeletingPathExtension())’s stringByAppendingPathExtension:"scptd") as string –> "/Users/me/Desktop/test2.scptd" |
ファイル名から拡張子を外して、別の拡張子に付け替える
AppleScript名:ファイル名から拡張子を外して、別の拡張子に付け替える |
— Created 2018-01-29 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set origName to "6020 Touch BarとAppleScript.md" set newName to repFileNameExtension(origName, ".pdf") of me –> "6020 Touch BarとAppleScript.pdf" set origName to "6020 Touch BarとAppleScript" set newName to repFileNameExtension(origName, ".pdf") of me –> "6020 Touch BarとAppleScript.pdf" on repFileNameExtension(origName, newExt) set aName to current application’s NSString’s stringWithString:origName set theExtension to aName’s pathExtension() if (theExtension as string) is not equal to "" then set thePathNoExt to aName’s stringByDeletingPathExtension() set newName to (thePathNoExt’s stringByAppendingString:newExt) else set newName to (aName’s stringByAppendingString:newExt) end if return newName as string end repFileNameExtension |
Homeフォルダへのパスを求める1
AppleScript名:Homeフォルダへのパスを求める1 |
— Created 2016-02-19 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aDesktopPath to (current application’s NSProcessInfo’s processInfo()’s environment()’s objectForKey:"HOME") as string –> "/Users/me" |
Homeフォルダへのパスを求める2
AppleScript名:Homeフォルダへのパスを求める2 |
— Created 2016-02-19 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set homeDir to (current application’s NSHomeDirectory()) as string –> "/Users/me" |
path toの高度な機能(アプリケーションへのパス)
AppleScript名:path toの高度な機能(アプリケーションへのパス) |
–現在最前面になっているアプリケーション set bPath to path to frontmost application –> alias "Macintosh HD:Applications:Utilities:Script Editor.app:" –現在対象になっているアプリケーション set aPath to path to current application –> alias "Macintosh HD:Applications:Utilities:Script Editor.app:" –アプリケーション名で指定 set cPath to path to application "Calendar" –> alias "Macintosh HD:Applications:Calendar.app:" –バンドルIDで指定 set dPath to path to application id "com.apple.ichat" –> alias "Macintosh HD:Applications:Messages.app:" |
path toでシステムのさまざまなパスを求める(4文字指定)
path toでさまざまなフォルダへのパスを求めるAppleScriptの4文字パラメータで指定するバージョンです。
過去の(Classic MacOS時代の)Scriptとの互換性を維持するために残されている機能のようですが、さすがにファイルクリエータ的なパラメータは今日では好きこのんで使うものでもないので、不思議なpath toの記述を見かけたときに参照する程度でしょうか。
AppleScript名:path toでシステムのさまざまなパスを求める(4文字指定) |
set r001 to path to "macs" –> alias "Macintosh HD:System:" set r002 to path to "desk" –> alias "Macintosh HD:Users:me:Desktop:" –set r003 to path to "sdsk" –> alias "Macintosh HD:Users:me:Desktop Folder:" set r004 to path to "trsh" –> alias "Macintosh HD:Users:me:.Trash:" set r005 to path to "empt" –> alias "Macintosh HD:Users:me:.Trash:" set r006 to path to "font" –> alias "Macintosh HD:System:Library:Fonts:" set r007 to path to "pref" –> alias "Macintosh HD:Users:me:Library:Preferences:" set r008 to path to "sprf" –> alias "Macintosh HD:System:Library:PreferencePanes:" set r009 to path to "temp" –> alias "Macintosh HD:private:var:folders:h4:jfhlwst88xl9z0001s7k9vk00000gr:T:TemporaryItems:" set r010 to path to "apps" –> alias "Macintosh HD:Applications:" set r011 to path to "docs" –> alias "Macintosh HD:Users:me:Documents:" set r012 to path to "root" –> alias "Macintosh HD:System:" set r013 to path to "flnt" –> alias "Macintosh HD:private:var:folders:h4:jfhlwst88xl9z0001s7k9vk00000gr:T:Cleanup At Startup:" set r014 to path to "asup" –> alias "Macintosh HD:Library:Application Support:" set r015 to path to "トhlp" –> alias "Macintosh HD:Library:Documentation:Help:" –set r016 to path to "トmod" –> alias "Macintosh HD:System:Library:Modem Scripts:" –set r017 to path to "ppdf" –> alias "Macintosh HD:System:Library:Printers:PPDs:" set r018 to path to "トscr" –> alias "Macintosh HD:System:Library:ScriptingAdditions:" –set r019 to path to "トlib" –> alias "Macintosh HD:System:Library:CFMSupport:" set r020 to path to "fvoc" –> alias "Macintosh HD:System:Library:Speech:Voices:" set r021 to path to "utiト" –> alias "Macintosh HD:Applications:Utilities:" set r022 to path to "aexト" –> alias "Macintosh HD:Applications:Extras:" set r023 to path to "cmnu" –> alias "Macintosh HD:Library:Contextual Menu Items:" set r024 to path to "prof" –> alias "Macintosh HD:System:Library:ColorSync:Profiles:" set r025 to path to "favs" –> alias "Macintosh HD:Users:me:Library:Favorites:" set r026 to path to "dtpト" –> alias "Macintosh HD:Library:Desktop Pictures:" set r027 to path to "issf" –> alias "Macintosh HD:Users:me:Library:Internet Search Sites:" –set r028 to path to "fnds" –> alias "Macintosh HD:System:Library:Find:" set r029 to path to "ilgf" –> alias "Macintosh HD:Library:Receipts:" set r030 to path to "scrト" –> alias "Macintosh HD:Users:maro:Library:Scripts:" set r031 to path to "fasf" –> alias "Macintosh HD:Users:me:Library:Scripts:Folder Action Scripts:" set r032 to path to "rapp" –> alias "Macintosh HD:Users:me:Library:Recent Applications:" set r033 to path to "rdoc" –> alias "Macintosh HD:Users:me:Library:Recent Documents:" set r034 to path to "rsvr" –> alias "Macintosh HD:Users:me:Library:Recent Servers:" set r035 to path to "kchn" –> alias "Macintosh HD:Users:me:Library:Keychains:" set r036 to path to "qtex" –> alias "Macintosh HD:System:Library:QuickTime:" set r037 to path to "usrs" –> alias "Macintosh HD:Users:" set r038 to path to "cusr" –> alias "Macintosh HD:Users:me:" set r039 to path to "sdat" –> alias "Macintosh HD:Users:Shared:" set r040 to path to "rotf" –> alias "Macintosh HD:System:" set r041 to path to "csrv" –> alias "Cherry:System:Library:CoreServices:" |
path toの高度な機能(さまざまなフォルダへのパスを求める)
AppleScript名:path toの高度な機能(さまざまなフォルダへのパスを求める) |
set aPath to path to system folder –> alias "Cherry:System:" set aPath to path to system preferences –> alias "Cherry:System:Library:PreferencePanes:" set aPath to path to application support from user domain with folder creation –> alias "Macintosh HD:Users:maro:Library:Application Support:" set aPath to path to applications folder –> alias "Macintosh HD:Applications:" set aPath to path to desktop from user domain –> alias "Macintosh HD:Users:maro:Desktop:" set aPath to path to desktop pictures folder from user domain with folder creation –> alias "Macintosh HD:Users:maro:Library:Desktop Pictures:" set aPath to path to documents folder from user domain with folder creation –> alias "Macintosh HD:Users:maro:Documents:" set aPath to path to downloads folder from user domain with folder creation –> alias "Macintosh HD:Users:maro:Downloads:" set aPath to path to favorites folder from user domain with folder creation –> alias "Macintosh HD:Users:maro:Library:Favorites:" set aPath to path to Folder Action scripts folder from user domain –> alias "Macintosh HD:Users:maro:Library:Scripts:Folder Action Scripts:" set aPath to path to fonts folder from user domain with folder creation –> alias "Macintosh HD:Users:maro:Library:Fonts:" set aPath to path to help folder from user domain with folder creation –> alias "Macintosh HD:Users:maro:Library:Documentation:Help:" set aPath to path to home folder from user domain with folder creation –> alias "Macintosh HD:Users:me:" set aPath to path to internet plugins folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Internet Plug-Ins:" set aPath to path to keychain folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Keychains:" set aPath to path to library folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:" –set aPath to path to modem scripts from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Modem Scripts:" set aPath to path to movies folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Movies:" set aPath to path to music folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Music:" set aPath to path to pictures folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Pictures:" set aPath to path to preferences from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Preferences:" set aPath to path to printer descriptions from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Printers:PPDs:" set aPath to path to public folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Public:" set aPath to path to scripting additions folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:ScriptingAdditions:" set aPath to path to scripts folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Scripts:" set aPath to path to services folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Library:Services:" set aPath to path to shared documents from user domain with folder creation –> alias "Cherry:Users:Shared:" –set aPath to path to shared libraries from user domain with folder creation set aPath to path to sites folder from user domain with folder creation –> alias "Macintosh HD:Users:me:Sites:" set aPath to path to startup disk –> alias "Cherry:" set aPath to path to startup items –> alias "Macintosh HD:Library:StartupItems:" set aPath to path to temporary items –> alias "Cherry:private:var:folders:h4:jfhlwst88xl9z0001s7k9vk00000gr:T:TemporaryItems:" set aPath to path to trash –> alias "Macintosh HD:Users:me:.Trash:" set aPath to path to users folder –> alias "Cherry:Users:" set aPath to path to workflows folder –> alias "Macintosh HD:Users:me:Library:Workflows:" set aPath to path to voices –> alias "Cherry:System:Library:Speech:Voices:" –set aPath to path to apple menu –set aPath to path to control panels –set aPath to path to control strip modules –set aPath to path to extensions –set aPath to path to launcher items folder –set aPath to path to printer drivers –set aPath to path to printmonitor –set aPath to path to shutdown folder –set aPath to path to speakable items –set aPath to path to stationery |
選択したファイルのローカライズ名を取得する v2
AppleScript名:選択したファイルのローカライズ名を取得する v2 |
— Created 2014-12-14 by Takaaki Naganoya — 2014 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" property |NSURL| : a reference to current application’s |NSURL| property NSURLLocalizedNameKey : a reference to current application’s NSURLLocalizedNameKey set a to choose folder –> alias "Macintosh HD:Users:me:Music:" set b to getLocalizedNameFor(a) –> {true, "ミュージック"} on getLocalizedNameFor(aPath) set anNSURL to |NSURL|’s fileURLWithPath:(POSIX path of aPath) set {theResult, theValue} to anNSURL’s getResourceValue:(reference) forKey:(NSURLLocalizedNameKey) |error|:(missing value) return {theResult, theValue as string} as list end getLocalizedNameFor |
選択したファイルパスに枝番を追加する
AppleScript名:選択したファイルパスに枝番を追加する |
— Created 2014-12-27 by Takaaki Naganoya — 2014 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aPOSIXpath to POSIX path of (choose file of type {"com.adobe.pdf"} with prompt "PDFを指定してください") set bPath to addStringbeforeExtension(aPOSIXpath, "_1") –> "/Users/me/Desktop/ryuoh01_1.pdf" on addStringbeforeExtension(aPath, extraString) set pathString to current application’s NSString’s stringWithString:aPath set theExtension to pathString’s pathExtension() set thePathNoExt to pathString’s stringByDeletingPathExtension() set newPath to (thePathNoExt’s stringByAppendingString:extraString)’s stringByAppendingPathExtension:theExtension return newPath as string end addStringbeforeExtension |
OLD StyleASでチルダ入りパス展開
AppleScript名:OLD Style ASでチルダ入りパス展開 |
— Created 2016-05-13 by Christopher Stone
set aPath to "~/Desktop" set aRes to expandTildeInPath(aPath) of me –> "/Users/me/Desktop" on expandTildeInPath(thePath) tell application "System Events" return (POSIX path of (disk item thePath)) end tell end expandTildeInPath |