AppleScriptFolder

[MDLS]mdlsでフォントファミリー名を取得する

こちらLINKの記事で
書いたスクリプトを
複数選択処理可能にした版

フォントを選択する

フォントファミリー名を取得する

フォントファミリー名でフォルダーを作成する

フォントをフォルダ内に移動する


エラーになる場合
PS1フォント等でフォントのファイル名とフォントファミリー名が同一の場合
基本的にはTTとOTのフォント専用

不具合
mdlsが正しいフォントファミリー名を取得出来ない事がある


(*
MakeFolderMoveFont.scpt 20141230

mdls スポットライトのメタデータ呼び出しコマンドから
フォントファミリーネームを取得して
フォントファミリー名のフォルダーを作成して
その中にフォント入れます

フォントファミリー名の不具合の説明はこちら
https://force4u.cocolog-nifty.com/skywalker/2014/12/sourcehansans-1.html
*)
(*
Uniform Type Identifiers Reference フォント関係
詳しくはこちら
http://goo.gl/C9EhVx
public.font
public.truetype-font
com.adobe.postscript-font
com.apple.truetype-​datafork-suitcase-font
public.opentype-font
public.truetype-ttf-font
public.truetype-collection-​font
com.apple.font-suitcase
com.adobe.postscript-lwfn​-font
com.adobe.postscript-pfb-​font
com.adobe.postscript.pfa-​font

*)
-----ファインダー呼び出し
tell application "Finder"
activate
---ファイルを選択 TTF TTC OTF PS1のみ選べます Font Suitcase等は選べません
set objResult to ¬
choose file default location (path to fonts folder from user domain) ¬
of type ¬
{"public.truetype-ttf-font", "public.truetype-collection-font", "public.opentype-font", "com.apple.truetype-datafork-suitcase-font", "com.adobe.postscript-lwfn​-font"} invisibles true ¬
with multiple selections allowed without showing package contents

end tell
----繰り返しのはじまり
repeat with objFiles in objResult
----ファインダー処理
tell application "Finder"
----取得したファイルのエリアスを取得
set theFileIAlias to objFiles as alias
----ファイル名を取得
set theFontName to (name of (info for objFiles) as list) as text
----フォントがあるディレクトリを取得
set theFileDir to (container of objFiles) as text
----UNIXパスにしておきます
set theUnixFilePath to (POSIX path of theFileIAlias) as text
end tell
-----mdlsのコマンドを実行して格納
set theMdlsResult to do shell script "/usr/bin/mdls -name com_apple_ats_name_family \"" & theUnixFilePath & "\""
-----区切り文字を改行に設定
set AppleScript's text item delimiters to {"\r"}
-----改行毎のリストとして格納
set theResultList to (every text item of theMdlsResult) as list
-----区切り文字を戻す
set AppleScript's text item delimiters to {""}
-----何行あるか?(データ件数)を数える
set numListLine to (count of theResultList) as number

-----データ件数3件の場合ローカライズ名が無いと判断
if numListLine is 3 then
set theLineData to (item 2 of theResultList) as text
set theResultText to my doReplace(theLineData, "\t", "") as text
set theResultText to my doReplace(theResultText, "\"", "") as text
set theResultText to my doReplace(theResultText, " ", "") as text

-----データ件数4件の場合ローカライズ名があると判断
else if numListLine is 4 then
set theLineData to (item 3 of theResultList) as text
set theResultText to my doReplace(theLineData, "\t", "") as text
set theResultText to my doReplace(theResultText, "\"", "") as text
set theResultText to my doReplace(theResultText, " ", "") as text

else

end if
---------- JavaScript escapes を変換するために大文字のUを小文字に その後で4桁コードをCharacterEntityに変換
set theResultText to my doReplace(theResultText, "\\U", "\\u") as text
set thePregReplace to "php -r 'echo preg_replace(\"/\\\\\\u([0-9abcdef]{4})/\", \"&#x$1;\", \"" & theResultText & "\");'" as text
set theResultText to (do shell script thePregReplace) as text
----------その後でシングルバイトの2桁コードをCharacterEntityに変換
set thePregReplace to "php -r 'echo preg_replace(\"/\\\\\\u([0-9abcdef]{2})/\", \"&#x$1;\", \"" & theResultText & "\");'" as text
set theResultText to (do shell script thePregReplace) as text
----------デコード本処理 CharacterEntity をテキストに変換する
set theMbConvertEncoding to "php -r 'echo mb_convert_encoding(\"" & theResultText & "\", \"UTF-8\", \" HTML-ENTITIES \");'" as text
set theResultText to (do shell script theMbConvertEncoding) as text
-----ファインダー呼び出し
tell application "Finder"
try
-----取得したフォントファミリー名でフォルダーを作る
make new folder at (theFileDir) with properties ¬
{name:theResultText ¬
, owner privileges:read write ¬
, group privileges:read write ¬
, everyones privileges:read write ¬
, comment:theFontName ¬
, description:theFontName ¬
}
end try
end tell
-----ファインダー呼び出し
tell application "Finder"
try
-----フォルダーの中にフォントファイルを入れる
move (objFiles) to alias (theFileDir & theResultText & ":")
end try
end tell
-----ファインダー呼び出し
tell application "Finder"
activate
-----出来上がりフォルダを開く
open theFileDir
end tell

end repeat

---------文字の置き換えサブルーチン
to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace

「MakeFolderMoveFont.scpt.zip」をダウンロード


「MakeFolderMoveFont.scpt.rtf」をダウンロード

|

[AppleScript]フォルダを連番で複数作る

一度に多数のフォルダを作成します
連番を付加します
連番にゼロサプレスを付けた形
たぶん
日付フォルダに使うんでしょ?


tell application "Finder"

-------------------------------------------------フォルダ名ダイアログのデフォルトアンサー用に年月を求める
set theMonth to do shell script "date '+%Y%m'" as text
-------------------------------------------------フォルダを選択
set theFolderAlias to choose folder "フォルダを選択" default location (path to desktop folder from user domain)
-------------------------------------------------フォルダ名を入力
display dialog "フォルダ名を入力" default answer theMonth buttons {"Set", "Cancel"} with icon 1 default button 1 with title "フォルダ名を入力" cancel button "Cancel"
-------------------------------------------------フォルダを取得してテキストとして格納
if button returned of the result is "Set" then
set theMainFolderName to text returned of the result as text
end if
-------------------------------------------------個数を入力
display dialog "いくつフォルダを作りますか" default answer "31" buttons {"Make", "Cancel"} with icon 1 default button 1 with title "数字入力" cancel button "Cancel"
-------------------------------------------------個数を取得して数字で格納
if button returned of the result is "Make" then
set theNoFolderName to text returned of the result as number
--------------------繰り返し用にも数字を用意しておく
set theCreateNo to theNoFolderName as number
end if
-------------------------------------------------個数が何桁かを判定
set theCntNo to the length of characters of (theNoFolderName as text) as number
-------------------------------------------------個数の初期化
set theCreateNo to 0 as number
-------------------------------------------------■■■■■■■ここから繰り返し部
repeat while theNoFolderName > theCreateNo
-------------------------------------------------個数に1を足す
set theCreateNo to theCreateNo + 1 as number
-------------------------------------------------4桁までのゼロサプレス処理(4桁は実用的ではないなw
if theCntNo = 2 then
if theCreateNo < 10 then
set theFcount to "0" & theCreateNo as text
else
set theFcount to theCreateNo as text
end if
else if theCntNo = 3 then
if theCreateNo < 10 then
set theFcount to "00" & theCreateNo as text
else if theCreateNo < 100 then
set theFcount to "0" & theCreateNo as text
else
set theFcount to theCreateNo as text
end if
else if theCntNo = 4 then
if theCreateNo < 10 then
set theFcount to "000" & theCreateNo as text
else if theCreateNo < 100 then
set theFcount to "00" & theCreateNo as text
else if theCreateNo < 1000 then
set theFcount to "0" & theCreateNo as text
else
set theFcount to theCreateNo as text
end if
else
set theFcount to theCreateNo as text
end if
-------------------------------------------------フォルダ名を定義 アンダースコアで分ける
set theFolderName to theMainFolderName & "_" & theFcount
-------------------------------------------------フォルダ名を定義
----set theFolderName to theMainFolderName & theFcount
-------------------------------------------------#フォルダを作る
try
make new folder at theFolderAlias with properties {name:theFolderName}
end try
-------------------------------------------------繰り返しの終了
end repeat
-------------------------------------------------処理の終了
end tell





フォルダ名をアンダースコアで分けるか?は以下を書き換えで





Website_image20121209_161334





Website_image20121209_161349


Kさん
わからなければ電話してください
忘年会で山崎1杯で良いです。w





「makefolderAlot.scpt.zip」をダウンロード


「makefolderAlot.rtf」をダウンロード





   

|

[Move]フォルダの移動

AppleScriptsでの
フォルダの移動



tell application "Finder"

set FolderAlias to choose folder with prompt "移動させるフォルダを選んでください"

set destFolderAlias to choose folder with prompt "移動先フォルダを選んでください"


move FolderAlias to folder destFolderAlias


end tell

↑これを実行すると
エラーイベントに記録されます。

error number 0

Screencapture00220915_01628


これは、このページで
Operating System Errors: [FORCE][LINK]Operating System Errors: [FORCE]を新しいウィンドで開きます
書いたように

『エラーがありませんでした』
って
エラーです。(笑)


 

「move.scpt.zip」をダウンロードZIP[Download]ZIPを新しいウィンドで開きます

「move.html」をダウンロードPDF[LINK]PDFを新しいウィンドで開きます

| | コメント (0)

[AppleScript]フォルダのアクセス権を変更する

AppleScriptでフォルダのアクセス権を変更します。

デスクトップに
今日の日付フォルダを作って
そのフォルダを全てのユーザーで『read write』に設定します。

10.6x

Make new folder でフォルダーを作ると

こちら[LINK]OpenNewWindowで説明した
デフォルトのアクセス権を持って作られます。

その後でフォルダのアクセス権を変更するわけです。

ここでは
シェルスクリプトを使わずに
AppleScriptでアクセス権を変更します。


 

tell application "Finder"
activate
----年号取得
set yearName to the year of (current date) as Unicode text
----月番号取得
set monthName to (the month of (current date) as number) as Unicode text
----日付番号取得
set dayName to the day of (current date) as Unicode text
----フォルダ名取得
set todayName to yearName & "_" & monthName & "_" & dayName
----デスクトップパス取得
set deskTopPath to the path to desktop from user domain
----フォルダを作る(アクセス権指定しているがここでは設定されない)
try
make new folder at (deskTopPath) with properties ¬
{name:todayName ¬
, owner privileges:read write ¬
, group privileges:read write ¬
, everyones privileges:read write ¬
}
end try
----作ったフォルダをtodayNameFolderとして指定
set todayNameFolder to (deskTopPath as Unicode text) & todayName as alias
----todayNameFolderを呼び出し アクセス権を設定
tell folder todayNameFolder
set owner privileges to read write
set group privileges to read write
set everyones privileges to read write
end tell

end tell

 


「privileges.rtf」をダウンロード[Download]DownloadFile

「privileges.scpt.zip」をダウンロード[Download]DownloadFile

| | コメント (0)

[AppleScript]ファイル名のフォルダを作ってその中に入れる

拡張子をのぞいたファイル名で
フォルダを作って
その中にファイルを移動する。

 


----ファイルを選択して FileAlias に格納
set FileResult to choose file "変更するファイルを選択"
----エリアスを取得
set FileAlias to FileResult as alias
----FileAliasをテキスト形式に変更してFilePathに格納
set FilePath to FileAlias as Unicode text
----FileAliasの情報を取得ObjInfoに格納
set ObjInfo to info for FileAlias
----ObjInfoからファイル名を抜き出しFileNameに格納
set FileName to name of ObjInfo as Unicode text
----ObjInfoから拡張子を抜き出しExtNameに格納
set ExtName to name extension of ObjInfo as Unicode text
----ファイル名の文字数を数える
set CntFileName to (the length of characters of FileName) as integer
----拡張子の文字数を数える1足すのはカンマ分
set CntExtName to (the length of characters of ExtName) + 1 as integer
----ショートファイル名の文字数は?
set CntShotFileName to CntFileName - CntExtName as integer
----拡張子抜きのショートファイル名を抜き出します
set ShortFileName to characters 1 thru CntShotFileName of (the FileName) as Unicode text


----パスの文字数を数える
set CntFilePath to the length of characters of FilePath as integer
----パスの文字数 ー ファイル名でディレクトリ名の文字数を計算する
set CntDirPath to CntFilePath - CntFileName as integer
----ファイルのディレクトリ名を定義する
set DirName to characters 1 thru CntDirPath of FilePath as Unicode text


tell application "Finder"
----ファイルのディレクトリにショートファイル名のフォルダを作ります。
try
make new folder at (DirName) with properties ¬
{name:ShortFileName ¬
, owner privileges:read write ¬
, group privileges:read write ¬
, everyones privileges:read write ¬
, comment:FileName ¬
, description:ShortFileName ¬
}
end try
end tell



tell application "Finder"
try
----選んだファイルを作ったフォルダの中に移動します。
move (FileAlias) to alias (DirName & ShortFileName & ":")
delete alias (DirName & ShortFileName & ":.DS_Store")
end try

end tell


 

「move2FileNameFolder.rtf」をダウンロード

「move2FileNameFolder.scpt.zip」をダウンロード

 

↑のスクリプトをドロップレットにしたもの

「move2FileNameFolder.app.zip」をダウンロード


| | コメント (2)

[AppleScript]フォルダ名を変更する

アップルスクリプトでフォルダ名を変更します。

変更後のフォルダ名を決める
変更するフォルダを選ぶ

の2ステップ


tell application "Finder"

-----起動
launch
-----アクテブ 全面に
activate
-----ダイアログを出して変更後のフォルダ名を指定
display dialog "変更後のフォルダ名を入力" default answer "名称未設定フォルダ"
-----戻り値をNewNameとして格納
set NewName to text returned of the result as Unicode text
-----フォルダを指定します
choose folder with prompt "フォルダを選んで下さい。" with invisibles without multiple selections allowed
-----戻り値をFolderAliasとして格納
set FolderAlias to result as alias
-----フォルダ名変更
set name of folder FolderAlias to NewName


end tell

 

「chgFolderName.scpt.zip」をダウンロード

「chgFolderName.rtf」をダウンロード

 


  

| | コメント (0)

[ AppleScript ] 新規フォルダを作成する(フォルダ名を日付にする)

AppleScriptで新規フォルダを作成する。

フォルダ名を今日の日付にするサンプル。

ログインユーザ−のデスクトップに今日の日付のフォルダを作ります。




「MakeNewFolder.scpt.zip」をダウンロード




「MakeNewFolder.txt」をダウンロード





サブルーチン(別処理)の入れ子の解説画像

Photo_3



値の一連の流れを理解する
参考になると思います。



| | コメント (0)

その他のカテゴリー

Accessibility AccessibilityCheck AccessibilityForm AccessibilityInDesign AccessibilityPDF Acrobat Acrobat Action Acrobat Annotation Acrobat AppleScripts Acrobat Character Acrobat Layer Acrobat PDF Embed API Acrobat PDF Form Print Acrobat Plug-ins Acrobat Portfolios Acrobat Print AcrobatBarcode AcrobatDialog AcrobatForm AcrobatJS AcrobatMenu AcrobatPDF AcrobatStamp AcrobatYouTube AddressBook Adobe Adobe InDesign Adobe Photoshop AdobeAppleScript AdobeBridge AdobeIllustrator AdobeJSX aed Alfresco Android AnimationGif Apple Apple Support AppleScript AppleScriptBasics AppleScriptCharacter AppleScriptColor AppleScriptDroplet AppleScriptErrorNum AppleScriptFolder AppleScriptFontBook AppleScriptRename AppleScriptTools AppleSymbols Applications Barcode Barcode2D BarcodePostal BetterHTMLExport Book BOX Browser buzz Certificates CharacterEntity CharacterSets Colors Cool Site CSS Cutting DecoMail DecorationMail Design Desktop Diff DJ dmg DNS Documents Download DTP eBook Editer eMail Envelopes ExifTool Facebook FFmpeg File System Fonts FontsTool FontsWeb FOOD FormPrint ftp Gadget Gif Animation Google Google Chrome Enterprise HexEditor HTML info iPhoto ISBN ISO iTunes iWork iWorkNumbers iWorkNumbersCalendar iWorkNumbersTimecard iWorkPages JavaScript JeditX JeditX Regexp JeditXAppleScript JIS jquery Letterpress Library logo Mac Admin Mac Archiver Mac Browser Mac Browser Plugin Mac QuickLook Mac Setup Mac Spotlight Mac Video Map Memo Microsoft Teams Mobby mobileconfig Moto Movies Music Network Basic ntp OCR Office OfficePowerPoint OSX Paint Pantone Paper PDFlib Permission Photo Pictograms Print Public Python QuickLook QuickTime QuickTimeSetting QuickTimeSound Real Media ReName ResourceFork ruby Sample Screen ScreenCast Search Security SEO Sharing SLAResource Sound Spotlight Stamp SWF TCC.db Tutorial PSD TV Twitter Typography Unicode Utilities Video WEB APP WebFont Wedding Windows WindowsMedia XML XMP XPS YouTube YouTube Rss