ReName

名前+連番でリネーム


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# ファイル名を内包されているフォルダ名+連番にリネーム
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010
011property refMe : a reference to current application
012
013set appFileManager to refMe's NSFileManager's defaultManager()
014
015#############################
016###設定項目  桁数だけ0を
017###ゼロパディング(ゼロサプレス)=数値の桁揃え
018set strZeroSupp to ("000") as text
019#############################
020###設定項目 接尾語 ファイル名と連番の間
021set strDemText to ("@") as text
022
023#############################
024###ダイアログ
025tell current application
026  set strName to name as text
027end tell
028####スクリプトメニューから実行したら
029if strName is "osascript" then
030  tell application "Finder" to activate
031else
032  tell current application to activate
033end if
034###デフォルトロケーション
035set appFileManager to refMe's NSFileManager's defaultManager()
036set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
037set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
038set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
039
040###UTIリスト
041set listUTI to {"public.item"}
042
043set strMes to ("ファイルを選んでくださいA") as text
044set strPrompt to ("ファイルを選んでください\r名前+連番でリネームします") as text
045try
046  ### ファイル選択時
047  set listAliasFilePath to (choose file strMes with prompt strPrompt default location aliasDefaultLocation of type listUTI with invisibles, multiple selections allowed and showing package contents) as list
048on error
049  log "エラーしました"
050  return "エラーしました"
051end try
052if listAliasFilePath is {} then
053  log "エラーしました"
054  return "選んでください"
055end if
056
057
058########################
059##ダイアログ
060########################
061set strReadString to doGetPasteboard()
062set aliasIconPath to doGetAppIconAliasFilePath("com.apple.finder")
063#前面に
064set strName to (name of current application) as text
065if strName is "osascript" then
066  tell application "Finder" to activate
067else
068  tell current application to activate
069end if
070#
071set strTitle to ("入力してください") as text
072set strMes to ("ファイル名の先頭になる語句を入力\nファイル名" & strDemText & "連番でリネームされます") as text
073set recordResult to (display dialog strMes with title strTitle default answer strReadString buttons {"キャンセル", "OK"} default button "OK" cancel button "キャンセル" giving up after 30 with icon aliasIconPath without hidden answer)
074if (gave up of recordResult) is true then
075  return "時間切れです"
076else if (button returned of recordResult) is "キャンセル" then
077  return "キャンセルです"
078else
079  set strReturnedText to (text returned of recordResult) as text
080end if
081
082
083
084
085#############################
086###ファイルURLのみを格納するリスト
087set ocidFilePathURLAllArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
088###まずは全部のURLをArrayに入れる
089repeat with itemAliasFilePath in listAliasFilePath
090  ######パス
091  set aliasFilePath to itemAliasFilePath as alias
092  ###UNIXパスにして
093  set strFilePath to (POSIX path of aliasFilePath) as text
094  ###Stringsに
095  set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
096  ###パス確定させて
097  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath
098  ###NSURLに
099  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
100  ###戻り値をリストに格納
101  (ocidFilePathURLAllArray's addObject:(ocidFilePathURL))
102end repeat
103
104###ファイルリストのソート
105set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"absoluteString" ascending:(true) selector:"localizedStandardCompare:")
106(ocidFilePathURLAllArray's sortUsingDescriptors:{ocidSortDescriptor})
107
108#############################
109###リネーム
110###リストの数 objectAtIndexはゼロスタートなので1引く
111set numCntArray to ((count of listAliasFilePath) - 1) as integer
112###リストの数だけ繰り返し
113repeat with itemIntNo from 0 to numCntArray by 1
114set strItemNo to (itemIntNo + 1 ) as text
115  set strSeroSup to (strZeroSupp & strItemNo) as text
116  set strFileNO to (text -3 through -1 of strSeroSup) as text
117  ###元ファイルURL
118  set ocidItemPathURL to (ocidFilePathURLAllArray's objectAtIndex:(itemIntNo))
119  ###拡張子取得
120  set strExtension to (ocidItemPathURL's pathExtension()) as text
121  ###コンテナディレクトリ
122  set ocidContainerDirURL to ocidItemPathURL's URLByDeletingLastPathComponent()
123  ###ファイル名
124  set strNewFileName to (strReturnedText & strDemText & strFileNO & "." & strExtension)
125  ###リネーム済みURLL
126  set ocidNewFilePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:(strNewFileName) isDirectory:false)
127  ###リネーム
128  set listDone to (appFileManager's moveItemAtURL:(ocidItemPathURL) toURL:(ocidNewFilePathURL) |error| :(reference))
129end repeat
130
131
132
133
134########################
135## クリップボードの中身取り出し
136########################
137on doGetPasteboard()
138  set appPasteboard to refMe's NSPasteboard's generalPasteboard()
139  set ocidPastBoardTypeArray to appPasteboard's types
140  ###テキストがあれば
141  set boolContain to ocidPastBoardTypeArray's containsObject:"public.utf8-plain-text"
142  if boolContain = true then
143    ###値を格納する
144    tell application "Finder"
145      set strReadString to (the clipboard as text) as text
146    end tell
147    ###Finderでエラーしたら
148  else
149    set boolContain to ocidPastBoardTypeArray's containsObject:"NSStringPboardType"
150    if boolContain = true then
151      set ocidReadString to ocidPasteboard's readObjectsForClasses:({refMe's NSString}) options:(missing value)
152      set strReadString to ocidReadString as text
153    else
154      log "テキストなし"
155      set strReadString to "入力してください" as text
156    end if
157  end if
158  return strReadString
159end doGetPasteboard
160
161
162########################
163#AppIconのパスを求める
164########################
165on doGetAppIconAliasFilePath(argBundleID)
166  #
167  set appFileManager to refMe's NSFileManager's defaultManager()
168  set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
169  set ocidAppBundle to (refMe's NSBundle's bundleWithIdentifier:(argBundleID))
170  if ocidAppBundle ≠ (missing value) then
171    set ocidAppPathURL to ocidAppBundle's bundleURL()
172  else if ocidAppBundle = (missing value) then
173    set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(strBundleID))
174  end if
175  if ocidAppBundle ≠ (missing value) then
176    set ocidAppPathURL to ocidAppBundle's bundleURL()
177  else if ocidAppBundle = (missing value) then
178    set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(strBundleID))
179  end if
180  if ocidAppPathURL = (missing value) then
181    tell application "Finder"
182      try
183        set aliasAppApth to (application file id strBundleID) as alias
184      on error
185        return "アプリケーションが見つかりませんでした"
186      end try
187    end tell
188    set strAppPath to POSIX path of aliasAppApth as text
189    set strAppPathStr to refMe's NSString's stringWithString:(strAppPath)
190    set strAppPath to strAppPathStr's stringByStandardizingPath()
191    set ocidAppPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:true
192  end if
193  ####ダイアログに指定アプリのアイコンを表示する
194  ###アイコン名をPLISTから取得
195  set ocidPlistPathURL to ocidAppPathURL's URLByAppendingPathComponent:("Contents/Info.plist") isDirectory:false
196  set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithContentsOfURL:(ocidPlistPathURL)
197  set strIconFileName to (ocidPlistDict's valueForKey:("CFBundleIconFile")) as text
198  ###ICONのURLにして
199  set strPath to ("Contents/Resources/" & strIconFileName) as text
200  set ocidIconFilePathURL to ocidAppPathURL's URLByAppendingPathComponent:(strPath) isDirectory:false
201  ###拡張子の有無チェック
202  set strExtensionName to (ocidIconFilePathURL's pathExtension()) as text
203  if strExtensionName is "" then
204    set ocidIconFilePathURL to ocidIconFilePathURL's URLByAppendingPathExtension:"icns"
205  end if
206  ##-->これがアイコンパス
207  log ocidIconFilePathURL's absoluteString() as text
208  ###ICONファイルが実際にあるか?チェック
209  set boolExists to appFileManager's fileExistsAtPath:(ocidIconFilePathURL's |path|)
210  ###ICONがみつかない時用にデフォルトを用意する
211  if boolExists is false then
212    set aliasIconPath to POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/AlertNoteIcon.icns"
213  else
214    set aliasIconPath to ocidIconFilePathURL's absoluteURL() as alias
215  end if
216  return aliasIconPath
217end doGetAppIconAliasFilePath
AppleScriptで生成しました

|

HTMLentityバケしたファイル名をデコードして読めるファイル名にする


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use framework "UniformTypeIdentifiers"
010use framework "AVFoundation"
011use scripting additions
012
013property refMe : a reference to current application
014#UTIは任意で必要な項目追加してください
015property listUTI :  {"public.mpeg-4", "public.mpeg-2-transport-stream", "com.apple.quicktime-movie", "public.movie", "public.music"} as list
016
017######### on run
018-->ダブルクリックしたら
019on run
020  tell current application
021    set strName to name as text
022  end tell
023  if strName is "osascript" then
024    tell application "Finder" to activate
025  else
026    tell current application to activate
027  end if
028  set aliasIconPass to (POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/SidebarMoviesFolder.icns") as alias
029  set strDialogText to "ファイルをドロップしても利用できます"
030  set strTitleText to "ムービーファイルを選んでください"
031  set listButton to {"ファイルを選びます", "キャンセル"} as list
032  display dialog strDialogText buttons listButton default button 1 cancel button 2 with title strTitleText with icon aliasIconPass giving up after 1 with hidden answer
033  
034  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
035  set strPromptText to "ファイルを選んでください" as text
036  
037  set listAliasFilePath to (choose file with prompt strPromptText default location (aliasDefaultLocation) of type listUTI with multiple selections allowed without showing package contents and invisibles) as list
038  
039  -->値をOpenに渡たす
040  open listAliasFilePath
041end run
042
043######  open
044--> ドロップされたら
045on open listAliasFilePath
046  ##########################
047  set ocidUTIarray to (refMe's NSArray's arrayWithArray:(listUTI))
048  ##処理対象のURLだけ格納するARRAY
049  set ocidFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
050  #対象ファイルのみ収集
051  repeat with itemAliasFilePath in listAliasFilePath
052    ####まずはUNIXパスにして
053    set strFilePath to (POSIX path of itemAliasFilePath) as text
054    ####NSStringパスにします
055    set ocidFilePath to (refMe's NSString's stringWithString:(strFilePath))
056    ###NSURLにしたら
057    set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath))
058    ##対象ファイルか?getResourceValueを取得
059    set listResourceValue to (ocidFilePathURL's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error| :(reference))
060    set ocidContentType to (item 2 of listResourceValue)
061    set ocidUTI to ocidContentType's identifier()
062    set boolContain to (ocidUTIarray's containsObject:(ocidUTI)) as boolean
063    ##対象ファイルのみ収集
064    if boolContain is true then
065      (ocidFilePathURLArray's addObject:(ocidFilePathURL))
066    end if
067  end repeat
068  
069  
070  ##########################
071  #本処理
072  repeat with itemFilePathURL in ocidFilePathURLArray
073    ####ファイル名を取得
074    set ocidFileName to itemFilePathURL's lastPathComponent()
075    -->(*NSPathStore2*)
076    ####拡張子を取得
077    set ocidFileExtension to itemFilePathURL's pathExtension()
078    -->(*NSPathStore2*)
079    ####ファイル名から拡張子を取っていわゆるベースファイル名を取得
080    set ocidPrefixName to ocidFileName's stringByDeletingPathExtension
081    ####コンテナディレクトリを取得
082    set ocidContainerDirURL to ocidFilePathURL's URLByDeletingLastPathComponent()
083    ##########################
084    #
085    set strPrefixName to ocidPrefixName as text
086    set ocidPrefixName to (refMe's NSString's stringWithString:(strPrefixName))
087    #NSDATAにして
088    set ocidTextData to (ocidPrefixName's dataUsingEncoding:(refMe's NSUTF8StringEncoding))
089    #HTMLへの変換の属性DICT
090    set ocidAttributedDict to (refMe's NSDictionary's dictionaryWithObject:(refMe's NSHTMLTextDocumentType) forKey:(refMe's NSDocumentTypeDocumentAttribute))
091    #NSAttributedStringでHTMLに
092    set listResponse to (refMe's NSAttributedString's alloc()'s initWithData:(ocidTextData) options:(ocidAttributedDict) documentAttributes:(missing value) |error| :(reference))
093    if (item 2 of listResponse) = (missing value) then
094      log "正常処理"
095      #HTML形式のアトリビュートテキストが入っている
096      set ocidAttributedString to (item 1 of listResponse)
097    else if (item 2 of listResponse) ≠ (missing value) then
098      set strErrorNO to (item 2 of listResponse)'s code() as text
099      set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text
100      refMe's NSLog("■:" & strErrorNO & strErrorMes)
101      return "エラーしました" & strErrorNO & strErrorMes
102    end if
103    #アトリビュート属性付きテキストのテキストだけ取り出すと
104    set ocidDecString to ocidAttributedString's |string|
105    #デコード済みテキスト
106    set strEncodedText to ocidDecString as text
107    
108    
109    ####拡張子を加えて新しいファイル名
110    set ocidSaveFileName to (strEncodedText & "." & (ocidFileExtension as text)) as text
111    ####コンテナディレクトリURLに新しいファイル名を加えて新しいURL
112    set ocidSaveFilePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:(ocidSaveFileName))
113    set ocidSaveFilePath to ocidSaveFilePathURL's |path|()
114    ####################同名のファイルの有無を確認
115    set numRepeatTime to 1 as integer
116    set boolFileExists to true as boolean
117    set appFileManager to refMe's NSFileManager's defaultManager()
118    repeat while boolFileExists = false
119      ###ファイルパスに同名のファイルがあるか?
120      set boolFileExists to (appFileManager's fileExistsAtPath:(ocidSaveFilePath) isDirectory:false) as boolean
121      ###同名のファイルがある場合は数字をつける
122      if boolFileExists is true then
123        #####変更後のファイル名
124        set strAddFileName to (strAddFileName & " " & numRepeatTime) as text
125        set ocidSaveFileName to ((ocidPrefixName as text) & strAddFileName & "." & (ocidFileExtension as text)) as text
126        set ocidSaveFilePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:(ocidSaveFileName))
127        set ocidSaveFilePath to ocidSaveFilePathURL's |path|()
128      end if
129      set numRepeatTime to (numRepeatTime + 1) as integer
130    end repeat
131    ###リネーム
132    set listDone to (appFileManager's moveItemAtURL:(itemFilePathURL) toURL:(ocidSaveFilePathURL) |error| :(reference))
133    if (item 1 of listDone) is false then
134      log "失敗しました"
135    end if
136  end repeat
137end open
138
AppleScriptで生成しました

|

ファイルの作成日 修正日でリネームする


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "UniformTypeIdentifiers"
010use framework "AppKit"
011use scripting additions
012
013property refMe : a reference to current application
014set appFileManager to refMe's NSFileManager's defaultManager()
015
016################################
017#設定項目 
018#作成日時にリネームする true
019#更新日時にリネームする false
020set booleUseCreationDate to true as boolean
021
022################################
023#ダイアログ
024set strName to (name of current application) as text
025if strName is "osascript" then
026  tell application "Finder" to activate
027else
028  tell current application to activate
029end if
030
031set appFileManager to refMe's NSFileManager's defaultManager()
032set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
033set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
034set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
035#
036set listUTI to {"public.item"}
037set strMes to ("ファイルを選んでください") as text
038set strPrompt to ("ファイルを選んでください") as text
039try
040  set listAliasFilePath to (choose file strMes with prompt strPrompt default location aliasDesktopDirPath of type listUTI with invisibles, multiple selections allowed and showing package contents) as list
041on error
042  log "エラーしました"
043  return "エラーしました"
044end try
045if listAliasFilePath is {} then
046  return "選んでください"
047end if
048################################
049#ファイルの数だけ繰り返し
050repeat with itemAliasFilePath in listAliasFilePath
051  ##########
052  #パス
053  set aliasFilePath to itemAliasFilePath as alias
054  set strFilePath to (POSIX path of aliasFilePath) as text
055  set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
056  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
057  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
058  
059  ##########
060  #NSURLContentModificationDateKey
061  set listResponse to (ocidFilePathURL's getResourceValue:(reference) forKey:(refMe's NSURLContentModificationDateKey) |error| :(reference))
062  if (item 1 of listResponse) is true then
063    set ocidModificationDate to (item 2 of listResponse)
064    log ocidModificationDate as date
065  else if (item 1 of listResponse) is false then
066    set strErrorNO to (item 3 of listDone)'s code() as text
067    set strErrorMes to (item 3 of listDone)'s localizedDescription() as text
068    refMe's NSLog("■:" & strErrorNO & strErrorMes)
069    return "エラーしました" & strErrorNO & strErrorMes
070  end if
071  ##########
072  #NSURLCreationDateKey
073  set listResponse to (ocidFilePathURL's getResourceValue:(reference) forKey:(refMe's NSURLCreationDateKey) |error| :(reference))
074  if (item 1 of listResponse) is true then
075    set ocidCreationDateDate to (item 2 of listResponse)
076    log ocidCreationDateDate as date
077  else if (item 1 of listResponse) is false then
078    set strErrorNO to (item 3 of listDone)'s code() as text
079    set strErrorMes to (item 3 of listDone)'s localizedDescription() as text
080    refMe's NSLog("■:" & strErrorNO & strErrorMes)
081    return "エラーしました" & strErrorNO & strErrorMes
082  end if
083  
084  ####################
085  #カレンダーの仕様を設定
086  set ocidCalendarID to (refMe's NSCalendarIdentifierGregorian)
087  set ocidCalendar to (refMe's NSCalendar's alloc()'s initWithCalendarIdentifier:(ocidCalendarID))
088  set ocidTimezoneJP to (refMe's NSTimeZone's alloc()'s initWithName:("Asia/Tokyo"))
089  set ocidLocaleJP to (refMe's NSLocale's alloc()'s initWithLocaleIdentifier:("ja_JP_POSIX"))
090  #カレンダー初期化
091  set ocidFormatter to refMe's NSDateFormatter's alloc()'s init()
092  (ocidFormatter's setCalendar:(ocidCalendar))
093  (ocidFormatter's setTimeZone:(ocidTimezoneJP))
094  (ocidFormatter's setLocale:(ocidLocaleJP))
095  (ocidFormatter's setDateStyle:(refMe's NSDateFormatterFullStyle))
096  (ocidFormatter's setDateFormat:("yyyyMMdd-hhmmss"))
097  
098  #NSURLContentModificationDateKey
099  set ocidCreationDateDateStr to (ocidFormatter's stringFromDate:(ocidCreationDateDate))
100  set strCreationDateDate to ocidCreationDateDateStr as text
101  log strCreationDateDate
102  
103  #NSURLContentModificationDateKey
104  set ocidModificationDateStr to (ocidFormatter's stringFromDate:(ocidModificationDate))
105  set strModificationDate to ocidModificationDateStr as text
106  log strModificationDate
107  
108  #リネーム準備
109  #拡張子
110  set ocidExtensionName to ocidFilePathURL's pathExtension()
111  #ベースファイルパス
112  set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
113  #ファイル名(拡張子なし)
114  set ocidFileName to ocidBaseFilePathURL's lastPathComponent()
115  #コンテナ
116  set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
117  
118  ################################
119  #本処理 分岐
120  #ベースパスを生成
121  if booleUseCreationDate is true then
122    set ocidNewBaseFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(strCreationDateDate) isDirectory:(false))
123  else if booleUseCreationDate is false then
124    set ocidNewBaseFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(strModificationDate) isDirectory:(false))
125  end if
126  #拡張子を追加
127  set ocidNewFilePathURL to (ocidNewBaseFilePathURL's URLByAppendingPathExtension:(ocidExtensionName))
128  set listDone to (appFileManager's moveItemAtURL:(ocidFilePathURL) toURL:(ocidNewFilePathURL) |error| :(reference))
129  if (item 1 of listDone) is true then
130    # log "正常処理"
131  else if (item 2 of listDone) ≠ (missing value) then
132    set strErrorNO to (item 2 of listDone)'s code() as text
133    set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
134    refMe's NSLog("■:" & strErrorNO & strErrorMes)
135    return "エラーしました" & strErrorNO & strErrorMes
136  end if
137  
138  return
139  
140end repeat
141
142
143
144
AppleScriptで生成しました

|

[ビギナー向] ファイルの移動とリネーム


サンプルコード

サンプルソース(参考)
行番号ソース
001
002
003#移動 リネームするファイルを選択して
004set aliasFilePath to (choose file without multiple selections allowed) as alias
005#ファイル名を取得しておきます
006tell application "Finder"
007  set strFileName to (name of aliasFilePath) as text
008end tell
009#元のファイル名で移動先を表示
010set aliasMoveFilePath to (choose file name default name strFileName) as «class furl»
011#UNIXパスにします
012set strMoveFilePath to (POSIX path of aliasMoveFilePath) as text
013# / で分割して
014set strDelim to AppleScript's text item delimiters
015set AppleScript's text item delimiters to "/"
016set listDelim to every text item of strMoveFilePath
017set AppleScript's text item delimiters to strDelim
018# リストの最後の項目が リネーム後のファイル名
019set strSetFileName to (last item of listDelim) as text
020#リネーム後のファイル名で分割して
021set strDelim to AppleScript's text item delimiters
022set AppleScript's text item delimiters to strSetFileName
023set listDelim to every text item of strMoveFilePath
024set AppleScript's text item delimiters to strDelim
025#リストの最初の項目が保存先ディレクトリ
026set strDistDirPath to first item of listDelim
027#エイリアスにしておきます
028set aliasDistDirPath to (POSIX file strDistDirPath) as alias
029
030tell application "Finder"
031  #ファイルを移動先のフォルダへ移動してから
032  move file aliasFilePath to folder aliasDistDirPath
033  #移動されたファイルを
034  tell (file strFileName of folder aliasDistDirPath)
035    #リネームする
036    set name to strSetFileName
037  end tell
038end tell
AppleScriptで生成しました

|

[自分用]画像ファイルのリネーム(ピクセルサイズと解像度を入れる、カラースペース判定してタグ付けする 1bitTIFF判定入り)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004# カラースペースをタグ付けします
005# CMYK画像と GSBW画像にはラベル付けします
006# ファイル名にピクセルサイズと解像度を付与します
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "AppKit"
011use scripting additions
012
013property refMe : a reference to current application
014property refNotFound : a reference to 9.22337203685477E+18 + 5807
015
016
017on run
018  ##アラート要素
019  set appFileManager to refMe's NSFileManager's defaultManager()
020  set aliasIconPass to (POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/MultipleItemsIcon.icns") as alias
021  set strDialogText to "ドロップしても利用できます"
022  set strTitleText to "画像ファイルを選んでください"
023  set listButton to {"ファイルを選びます", "キャンセル"} as list
024  display dialog strDialogText buttons listButton default button 1 cancel button 2 with title strTitleText with icon aliasIconPass giving up after 1 with hidden answer
025  ##ダイアログ要素
026  set strName to (name of current application) as text
027  if strName is "osascript" then
028    tell application "Finder" to activate
029  else
030    tell current application to activate
031  end if
032  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
033  set listChooseFileUTI to {"public.image"}
034  set strPromptText to "イメージファイルを選んでください" as text
035  set strPromptMes to "イメージファイルを選んでください" as text
036  set listAliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with showing package contents, invisibles and multiple selections allowed) as list
037  -->値をOpenに渡たす
038  open listAliasFilePath
039end run
040
041on open listAliasFilePath
042  set appFileManager to refMe's NSFileManager's defaultManager()
043  repeat with itemAliasFilePath in listAliasFilePath
044    #入力ファイルパス
045    set aliasFilePath to itemAliasFilePath as alias
046    set strFilePath to (POSIX path of aliasFilePath) as text
047    set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
048    set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
049    set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
050    #出力用に分解
051    set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
052    set ocidFileName to ocidFilePathURL's lastPathComponent()
053    set ocidExtension to ocidFilePathURL's pathExtension()
054    set ocidBaseFileName to (ocidFileName's stringByDeletingPathExtension())
055    set ocidSaveFileName to (refMe's NSMutableString's stringWithString:(ocidBaseFileName))
056    ##############################
057    # 画像ファイルの解像度取得
058    # doGetImageSize(ファイルパスのURL)
059    # {true, {{width:幅mm height:mm}, {width:幅px, height:縦px},解像度}
060    ##############################
061    #サブルーチンに渡す
062    set listResponse to doGetImageSize(ocidFilePathURL)
063    #戻り値を各値に
064    if (item 1 of listResponse) = (true) then
065      log "正常処理 : "
066      set listImageSize to (item 2 of listResponse)
067      set numWmm to (width of (item 1 of listImageSize)) as real
068      set numHmm to (height of (item 1 of listImageSize)) as real
069      set numWpx to (width of (item 2 of listImageSize)) as integer
070      set numHpx to (height of (item 2 of listImageSize)) as integer
071      set numResolution to (item 3 of listImageSize) as integer
072      set strColorName to (item 4 of listImageSize) as text
073      log listResponse
074    else if (item 1 of listResponse) = (false) then
075      log (item 2 of listResponse) as text
076      return (ocidFileName as text) & " でエラーしました"
077    end if
078    
079    ##############################
080    #リネーム用のファイル名の処理
081    #基本形はAppleのIconファイル式
082    #basename_幅x縦@解像度.拡張子
083    ##############################
084    #ファイル名に追加する項目
085    #set strAddFileName to ("_" & numWpx & "x" & numHpx & "@" & numResolution & "ppi") as text
086    set strAddFileName to ("_" & numWpx & "x" & numHpx & "@" & numResolution) as text
087    #アンダースコアの有無判定
088    set ocidBoolContain to (ocidSaveFileName's containsString:("_"))
089    if ocidBoolContain = false then
090      log "ファイル名にアンダースコアが無いパターン"
091      (ocidSaveFileName's appendString:(strAddFileName))
092    else if ocidBoolContain = true then
093      log "ファイル名に_アンダースコアが入っている"
094      #正規表現の定義
095      set ocidOption to (refMe's NSRegularExpressionCaseInsensitive)
096      set strPattern to ("_\\d+x\\d+(@\\d+)?") as text
097      set listResponse to (refMe's NSRegularExpression's regularExpressionWithPattern:(strPattern) options:(ocidOption) |error| :(reference))
098      if (item 2 of listResponse) = (missing value) then
099        log "regularExpressionWithPattern 正常処理"
100        set appRegEx to (item 1 of listResponse)
101      else if (item 2 of listResponse) ≠ (missing value) then
102        log (item 2 of listResponse)'s code() as text
103        log (item 2 of listResponse)'s localizedDescription() as text
104        return "regularExpressionWithPattern エラーしました"
105      end if
106      #正規表現で判定する
107      set ocidFileNameRange to refMe's NSMakeRange(0, ocidBaseFileName's |length|())
108      set ocidOption to (refMe's NSMatchingReportProgress)
109      set ocidResponse to (appRegEx's rangeOfFirstMatchInString:(ocidBaseFileName) options:(ocidOption) range:(ocidFileNameRange))
110      if (ocidResponse's location()) = refNotFound then
111        log "全部ファイル名パターン"
112        (ocidSaveFileName's appendString:(strAddFileName))
113      else
114        log "解像度入りファイル名パターン"
115        #アンダースコアでファイル名を分解して
116        set ocidFileNameArray to (ocidSaveFileName's componentsSeparatedByString:("_"))
117        #最後の項目を削除
118        ocidFileNameArray's removeLastObject()
119        #で戻してベースファイル名
120        set ocidSaveFileName to (ocidFileNameArray's componentsJoinedByString:("_"))
121        #拡張子要素を追加する
122        (ocidSaveFileName's appendString:(strAddFileName))
123      end if
124    end if
125    
126    ##############################
127    #リネーム 前にカラーモードでタグ付
128    # RGB CMYK GS BW IND SP
129    ##############################
130    #セットするDICT
131    set ocidSetDict to (refMe's NSMutableDictionary's alloc()'s initWithCapacity:(0))
132    #DICTにセットするArray
133    set ocidTagArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
134    #カラーモードをテキストで
135    set ocidTagName to (refMe's NSString's stringWithString:(strColorName))
136    #ARRAYに追加
137    (ocidTagArray's addObject:(ocidTagName))
138    #DICTにタグ名として追加する
139    (ocidSetDict's setObject:(ocidTagArray) forKey:(refMe's NSURLTagNamesKey))
140    #リソースとして追加する
141    set listDone to (ocidFilePathURL's setResourceValues:(ocidSetDict) |error| :(reference))
142    if (item 1 of listDone) is true then
143      log "NSURLTagNamesKey 正常処理"
144    else if (item 2 of listDone) ≠ (missing value) then
145      log (item 2 of listDone)'s code() as text
146      log (item 2 of listDone)'s localizedDescription() as text
147      return "NSURLTagNamesKey エラーしました"
148    end if
149    ##############################
150    #CMYK=黄色、白黒,グレー=グレーの
151    #インデックスもつける
152    ##############################
153    if strColorName is "CMYK" then
154      #黄色
155      set ocidLabelNo to (refMe's NSNumber's numberWithInteger:(5))
156      #サブルーチンに渡す
157      set boolDone to doSetLabelNo(ocidFilePathURL, ocidLabelNo)
158    else if strColorName is "GS" then
159      #グレー
160      set ocidLabelNo to (refMe's NSNumber's numberWithInteger:(1))
161      #サブルーチンに渡す
162      set boolDone to doSetLabelNo(ocidFilePathURL, ocidLabelNo)
163    else if strColorName is "BW" then
164      #グレー
165      set ocidLabelNo to (refMe's NSNumber's numberWithInteger:(1))
166      #サブルーチンに渡す
167      set boolDone to doSetLabelNo(ocidFilePathURL, ocidLabelNo)
168    end if
169    
170    
171    ##############################
172    #リネーム 本処理
173    ##############################
174    if (ocidBaseFileName as text) is not (ocidSaveFileName as text) then
175      #とりあえずリネーム後のURL
176      set ocidSaveBaseFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(ocidSaveFileName) isDirectory:(false))
177      #拡張子追加
178      set ocidSaveFilePathURL to (ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(ocidExtension))
179      #存在確認
180      set ocidSaveFilePath to ocidSaveFilePathURL's |path|()
181      set boolDirExists to (appFileManager's fileExistsAtPath:(ocidSaveFilePath) isDirectory:(true))
182      if boolDirExists is false then
183        ###リネーム
184        set listDone to (appFileManager's moveItemAtURL:(ocidFilePathURL) toURL:(ocidSaveFilePathURL) |error| :(reference))
185        if (item 1 of listDone) is true then
186          log "moveItemAtURL 正常処理"
187        else if (item 2 of listDone) ≠ (missing value) then
188          log (item 2 of listDone)'s code() as text
189          log (item 2 of listDone)'s localizedDescription() as text
190          return "moveItemAtURL エラーしました"
191        end if
192        ###同名が存在
193      else if boolDirExists is true then
194        #ファイル名を分割して
195        set ocidFileNameArray to (ocidSaveFileName's componentsSeparatedByString:("_"))
196        #最後の部分を削除
197        ocidFileNameArray's removeLastObject()
198        #falseになるまでリピート
199        set boolDirExists to true as boolean
200        #重複ファイルに付与する番号
201        set numCntNO to 2 as integer
202        repeat while boolDirExists is true
203          #カウンターをテキストで追加
204          set strSetValue to (numCntNO) as text
205          (ocidFileNameArray's addObject:(strSetValue))
206          #アンダースコアで連結
207          set ocidSaveFileName to (ocidFileNameArray's componentsJoinedByString:("_"))
208          #連結ファイル名に解像度を付与
209          (ocidSaveFileName's appendString:(strAddFileName))
210          #パスにして
211          set ocidSaveFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(ocidSaveFileName) isDirectory:(false))
212          #拡張子を追加
213          set ocidSaveFilePathURL to (ocidSaveFilePathURL's URLByAppendingPathExtension:(ocidExtension))
214          set ocidSaveFilePath to ocidSaveFilePathURL's |path|()
215          #存在確認
216          set boolDirExists to (appFileManager's fileExistsAtPath:(ocidSaveFilePath) isDirectory:(true)) as boolean
217          #次のリピートに備えてカウンタをファイル名から削除
218          ocidFileNameArray's removeLastObject()
219          #カウントアップ
220          set numCntNO to (numCntNO + 1) as integer
221        end repeat
222        ##リネームする
223        set listDone to (appFileManager's moveItemAtURL:(ocidFilePathURL) toURL:(ocidSaveFilePathURL) |error| :(reference))
224        if (item 1 of listDone) is true then
225          log "moveItemAtURL正常処理"
226        else if (item 2 of listDone) ≠ (missing value) then
227          log (item 2 of listDone)'s code() as text
228          log (item 2 of listDone)'s localizedDescription() as text
229          return "moveItemAtURLエラーしましたb"
230        end if
231      end if
232    end if
233  end repeat
234end open
235
236
237
238##############################
239#CMYK=黄色、白黒,グレー=グレーの
240#インデックスもつける
241##############################
242to doSetLabelNo(argFilePathURL, argLabelNo)
243#ラベルを付与する
244  set listDone to (argFilePathURL's setResourceValue:(argLabelNo) forKey:(refMe's NSURLLabelNumberKey) |error| :(reference))
245  if (item 1 of listDone) is true then
246    log "NSURLLabelNumberKey 正常処理"
247    return true
248  else if (item 2 of listDone) ≠ (missing value) then
249    log (item 2 of listDone)'s code() as text
250    log (item 2 of listDone)'s localizedDescription() as text
251    log "NSURLLabelNumberKey エラーしました"
252    return false
253  end if
254end doSetLabelNo
255
256##############################
257# 画像のサイズと解像度
258#戻り値は
259# {true, {{width:幅mm height:mm}, {width:幅px, height:縦px},解像度}
260##############################
261to doGetImageSize(argFilePathURL)
262  # NSData
263  set ocidOption to (current application's NSDataReadingMappedIfSafe)
264  set listResponse to current application's NSData's dataWithContentsOfURL:(argFilePathURL) options:(ocidOption) |error| :(reference)
265  if (item 2 of listResponse) is (missing value) then
266    set ocidReadData to (item 1 of listResponse)
267    log "dataWithContentsOfURL 正常終了"
268  else
269    log (item 2 of listResponse)'s code() as text
270    set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text
271    set listReturnValue to {false, strErrorMes} as list
272    return listReturnValue
273  end if
274  # NSImage
275  set ocidImageData to current application's NSImage's alloc()'s initWithData:(ocidReadData)
276  if ocidImageData = (missing value) then
277    set listReturnValue to {false, "NSImageの内容が空です"} as list
278    return listReturnValue
279  end if
280  set ocidImageSizePt to ocidImageData's |size|()
281  #ポイントサイズ取得
282  set numWpt to ocidImageSizePt's width()
283  set numHpt to ocidImageSizePt's height()
284  #DecimalNumberに
285  set ocidDecWpt to current application's NSDecimalNumber's alloc()'s initWithString:(numWpt as text)
286  set ocidDecHpt to current application's NSDecimalNumber's alloc()'s initWithString:(numHpt as text)
287  #計算に必要な値
288  set ocidDecPt to current application's NSDecimalNumber's alloc()'s initWithString:("72")
289  set ocidDecIn to current application's NSDecimalNumber's alloc()'s initWithString:("25.4")
290  #幅pt÷72
291  set ocidFloatWpt to (ocidDecWpt's decimalNumberByDividingBy:(ocidDecPt))
292  #縦pt÷72
293  set ocidFloatHpt to (ocidDecHpt's decimalNumberByDividingBy:(ocidDecPt))
294  #(幅pt÷72)x25.4=幅MM
295  set ocidMMWpt to (ocidFloatWpt's decimalNumberByMultiplyingBy:(ocidDecIn))
296  #(縦pt÷72)x25.4=縦MM
297  set ocidMMHpt to (ocidFloatHpt's decimalNumberByMultiplyingBy:(ocidDecIn))
298  #小数点以下2位で四捨五入
299  set appFormatter to current application's NSNumberFormatter's alloc()'s init()
300  appFormatter's setRoundingMode:(current application's NSNumberFormatterRoundUp)
301  appFormatter's setNumberStyle:(current application's NSNumberFormatterDecimalStyle)
302  appFormatter's setUsesGroupingSeparator:(false)
303  appFormatter's setMaximumFractionDigits:(2)
304  #幅MM
305  set ocidWmm to appFormatter's stringFromNumber:(ocidMMWpt)
306  #縦MM
307  set ocidHmm to appFormatter's stringFromNumber:(ocidMMHpt)
308  # NSImageRepに変換
309  set ocidImageRepArray to ocidImageData's representations()
310  #ImageRepの数を数えて
311  set numCntImageRep to ocidImageRepArray's |count|()
312  if numCntImageRep = 0 then
313    set listReturnValue to {false, "NSImageRepの内容が空です"} as list
314    return listReturnValue
315  else if numCntImageRep > 1 then
316    log "マルチページデータです:最初のページのサイズを取得します"
317    set ocidItemImageData to ocidImageRepArray's firstObject()
318  else if numCntImageRep = 1 then
319    set ocidItemImageData to ocidImageRepArray's firstObject()
320    #フレームがあるか?を確認します
321    set ocidFrameCnt to (ocidItemImageData's valueForProperty:(refMe's NSImageFrameCount))
322    if ocidFrameCnt = (missing value) then
323      log "通常の画像データです"
324    else if (ocidFrameCnt's integerValue()) > 0 then
325      log "GIF画像データです"
326    end if
327    ##カラースペース名を取得しておく
328    set strColorSpage to (ocidItemImageData's colorSpaceName()) as text
329    if strColorSpage contains "RGB" then
330      set strColor to ("RGB") as text
331    else if strColorSpage contains "CMYK" then
332      set strColor to ("CMYK") as text
333    else if strColorSpage contains "White" then
334      ##白黒判定は別で
335      #CIImageを使おうか?と思ったがやめた
336      set strFilePath to (argFilePathURL's |path|()) as text
337      set strCommandText to ("/usr/bin/sips -g bitsPerSample \"" & strFilePath & "\" | grep bitsPerSample | awk '{print $2}'") as text
338      log strCommandText
339      try
340        set strResponse to (do shell script strCommandText) as text
341      on error
342        #コマンドエラーしたらGS入れておく
343        set strResponse to "GS" as text
344      end try
345      if strResponse contains "1" then
346        set strColor to ("BW") as text
347      else
348        set strColor to ("GS") as text
349      end if
350    else if strColorSpage contains "Named" then
351      set strColor to ("SP") as text
352    else if strColorSpage contains "Custom" then
353      set strColor to ("IND") as text
354    end if
355  end if
356  #ピクセルサイズ取得
357  set numWpx to ocidItemImageData's pixelsWide()
358  set numHpx to ocidItemImageData's pixelsHigh()
359  #解像度(ピクセル密度)
360  set ocidDecWpx to current application's NSDecimalNumber's alloc()'s initWithString:(numWpx as text)
361  set ocidResolutioW to (ocidDecWpx's decimalNumberByDividingBy:(ocidDecWpt))
362  set ocidResolutin to (ocidResolutioW's decimalNumberByMultiplyingBy:(ocidDecPt))
363  #解像度は桁揃えしておく
364  set ocidResolution to appFormatter's stringFromNumber:(ocidResolutin)
365  set ocidResolution to appFormatter's stringFromNumber:(ocidResolutin)
366  #戻り値用のリスト
367  # {true, {{width:幅mm height:mm}, {width:幅px, height:縦px},解像度}
368  set listReturnValue to {true, {{width:(ocidWmm as real), height:(ocidHmm as real)}, {width:numWpx, height:numHpx}, (ocidResolution as real), strColor}} as list
369  #戻す
370  return listReturnValue
371  
372end doGetImageSize
AppleScriptで生成しました

|

ファイル名を小文字にリネーム


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application




###ドロップレットWクリック時にはファイル選択ダイアログを出す
set strName to (name of current application) as text
if strName is "osascript" then
  tell application "Finder" to activate
else if strName is (name of me as text) then
  set strName to (name of me) as text
  tell application strName to activate
else
  tell current application to activate
end if
###デフォルトロケーションはデスクトップ
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
set strMes to "選んでください"
set listFilePath to (choose file strMes default location aliasDesktopDirPath with prompt strMes with multiple selections allowed without invisibles and showing package contents) as list


repeat with itemFilePath in listFilePath
  set aliasFilePath to itemFilePath as alias
  set strFilePath to (POSIX path of aliasFilePath) as text
  set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
  ###ファイル名
  set ocidFileName to ocidFilePathURL's lastPathComponent()
  ###小文字に
  set ocidRenameFileName to ocidFileName's lowercaseString()
  ###コンテナディレクトリ
  set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
  ###リネーム先
  set ocidSaveFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(ocidRenameFileName))
  ## リネーム=移動
  set appFileManager to refMe's NSFileManager's defaultManager()
  set ListDone to (appFileManager's moveItemAtURL:(ocidFilePathURL) toURL:(ocidSaveFilePathURL) |error|:(reference))
  
end repeat



|

[Rename]Windows互換名にリネーム(途中)

だいぶ、ほっておいたが
ファイル名置換 WINDOWS互換
https://quicktimer.cocolog-nifty.com/icefloe/2023/08/post-c0a6c2.html
何か、もう少しいい方法があるような気がするが
必要に迫られたので…
1:ファイル名の置換を行う
2:ディレクトリ名の置換を行う と2回処理をするので時間がかかる

【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application

property strReplaceChar : ("_") as text
property listReplaceChar : {"\\", "/", "?", "<", ">", ":", "*", "|", "\"", "¥", "."} as list


property recordReplaceChar : {|?|:"?", |.|:".", |¥|:"¥", |"|:""", |\||:"|", |*|:"*", |:|:":", |>|:">", |<|:"<", |/|:"/", |\\|:"¥"} as record


##############################
### Wクリックで起動時
on run
  ###ドロップレットWクリック時にはファイル選択ダイアログを出す
  set strName to (name of current application) as text
  if strName is "osascript" then
    tell application "Finder" to activate
  else if strName is (name of me as text) then
    set strName to (name of me) as text
    tell application strName to activate
  else
    tell current application to activate
  end if
  ###デフォルトロケーションはデスクトップ
  set appFileManager to refMe's NSFileManager's defaultManager()
  set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
  set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
  set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
  set strMes to "選んでください"
  set aliasDirPath to (choose folder strMes default location aliasDesktopDirPath with prompt strMes without invisibles, multiple selections allowed and showing package contents) as alias
open aliasDirPath
end run

##################################
###本処理
##################################
on open aliasDirPath
  ###ろドップパス
  set appFileManager to refMe's NSFileManager's defaultManager()
  set strDirPath to (POSIX path of aliasDirPath) as text
  set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
  set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
  set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:true)
  ###ドロップされたのがファイルの場合は処理しない
  set listResults to (ocidDirPathURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error|:(reference))
  if (item 2 of listResults) = (refMe's NSNumber's numberWithBool:true) then
    log "このURLはフォルダです"
  else
    log "このURLはファイルです"
return "このURLはファイルです"
  end if
  ##ファイル名 フォルダ名
  set ocidDirName to ocidDirPathURL's lastPathComponent()
  ##################################
  ###フォルダのコンテンツを収集
  ##################################
  set ocidEmuArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  ##プロパティ
  set ocidPropertie to {refMe's NSURLPathKey, refMe's NSURLIsRegularFileKey, refMe's NSURLContentTypeKey}
  ##オプション(隠しファイルは含まない)
  set ocidOption to refMe's NSDirectoryEnumerationSkipsHiddenFiles
  ####ディレクトリのコンテツを収集(最下層まで)
  set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertie) options:(ocidOption) errorHandler:(reference))
  ###戻り値をリストに格納
  set ocidEmuFileURLArray to ocidEmuDict's allObjects()
(ocidEmuArray's addObjectsFromArray:ocidEmuFileURLArray)
  ##################################
  ###ファイルパスだけにする
  ##################################
  set ocidFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  ####URLの数だけ繰り返し
  repeat with itemEmuArray in ocidEmuArray
    ####URLをforKeyで取り出し
    set listResult to (itemEmuArray's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
    ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
    set boolIsRegularFileKey to item 2 of listResult
    ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
    if boolIsRegularFileKey = (refMe's NSNumber's numberWithBool:true) then
      ####リストにする
(ocidFilePathURLArray's addObject:(itemEmuArray))
    end if
  end repeat
  ##################################
  ###並び替え並び替え compare
  ##################################
  ###不要なんだが念のためパスをURL順に並び替え
  set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"absoluteString" ascending:(true) selector:"localizedStandardCompare:")
(ocidFilePathURLArray's sortUsingDescriptors:{ocidSortDescriptor})
  ##################################
  ###ファイル名を置換する
  ##################################
  ###置換用のレーコードを定義して
  set ocidReplaceChar to refMe's NSDictionary's alloc()'s initWithDictionary:(recordReplaceChar)
  ###キーの値をリストにしておく
  set ocidAllKeys to ocidReplaceChar's allKeys()
  ###本処理の前に初期化しておく
  set appFileManager to refMe's NSFileManager's defaultManager()
  ###ソート済みのパスを順に処理
  repeat with itemFilePathURL in ocidFilePathURLArray
    ###コンテナディレクトリ
    set ocidContainerDirPathURL to itemFilePathURL's URLByDeletingLastPathComponent()
    ###拡張子
    set ocidExtensionName to itemFilePathURL's pathExtension()
    ###ファイル名
    set ocidFileName to itemFilePathURL's lastPathComponent()
    ###ファイル名から拡張子をとる
    set ocidBaseFileName to ocidFileName's stringByDeletingPathExtension()
    ###ファイル名の最初と最後のスペースはWindowsでNGなので置換しておく
    set boolSp to (ocidBaseFileName's hasSuffix:(" "))
    if boolSp is true then
      set ocidBaseFileName to (ocidBaseFileName's stringByReplacingOccurrencesOfString:(" ") withString:(strReplaceChar))
    end if
    set boolSp to (ocidBaseFileName's hasPrefix:(" "))
    if boolSp is true then
      set ocidBaseFileName to (ocidBaseFileName's stringByReplacingOccurrencesOfString:(" ") withString:(strReplaceChar))
    end if
    ###非互換文字のキーの数だけ繰り返し
    repeat with itemAllKeys in ocidAllKeys
      ###キーの値を取り出して
      set ocidMapValue to (ocidReplaceChar's valueForKey:(itemAllKeys))
      ###対象キーの文字列があれば バリューの値に置換する
      set ocidBaseFileName to (ocidBaseFileName's stringByReplacingOccurrencesOfString:(itemAllKeys) withString:(ocidMapValue))
    end repeat
    ###置換が終わった名称をコンテナディレクトリに付与
    set ocidNewFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(ocidBaseFileName))
    ###↑のパスに拡張子つけて変更後のパス
    set ocidNewFilePathURL to (ocidNewFilePathURL's URLByAppendingPathExtension:(ocidExtensionName))
    ###移動する(移動時にリネームしている)
    set listDone to (appFileManager's moveItemAtURL:(itemFilePathURL) toURL:(ocidNewFilePathURL) |error|:(reference))
    log item 1 of listDone
  end repeat
  ###ファイルのリネーム終了
  ##################################
  ###ファイル名変更後なので
  ####再度コンテンツ収集する
  ##################################
  set ocidEmuArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  ##プロパティ
  set ocidPropertie to {refMe's NSURLPathKey, refMe's NSURLIsRegularFileKey, refMe's NSURLIsDirectoryKey}
  ##オプション(隠しファイルは含まない)
  set ocidOption to refMe's NSDirectoryEnumerationSkipsHiddenFiles
  ####ディレクトリのコンテツを収集(最下層まで)
  set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertie) options:(ocidOption) errorHandler:(reference))
  ###戻り値をリストに格納
  set ocidEmuFileURLArray to ocidEmuDict's allObjects()
(ocidEmuArray's addObjectsFromArray:ocidEmuFileURLArray)
  ##################################
  ###ディレクトリパスだけにする
  ##################################
  set ocidFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  ####URLの数だけ繰り返し
  repeat with itemEmuArray in ocidEmuArray
    ####URLをforKeyで取り出し
    set listResult to (itemEmuArray's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error|:(reference))
    ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
    set boolIsRegularFileKey to item 2 of listResult
    ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
    if boolIsRegularFileKey = (refMe's NSNumber's numberWithBool:true) then
      ####リストにする
(ocidFilePathURLArray's addObject:(itemEmuArray))
    end if
  end repeat
  ##################################
  ###並び替え並び替え compare
  ##################################
  ###念のため並び替え
  set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"absoluteString" ascending:(true) selector:"localizedStandardCompare:")
(ocidFilePathURLArray's sortUsingDescriptors:{ocidSortDescriptor})
  ##################################
  ###ファイル名を置換する
  ##################################
  ###置換用のレーコードを定義して
  set ocidReplaceChar to refMe's NSDictionary's alloc()'s initWithDictionary:(recordReplaceChar)
  ###キーを取り出し
  set ocidAllKeys to ocidReplaceChar's allKeys()
  ###本処理の前に初期化しておく
  set appFileManager to refMe's NSFileManager's defaultManager()
  ###ソート済みのパスの数だけ繰り返し
  repeat with itemFilePathURL in ocidFilePathURLArray
    ###コンテナディレクト
    set ocidContainerDirPathURL to itemFilePathURL's URLByDeletingLastPathComponent()
    ###フォルダ名
    set ocidDirName to itemFilePathURL's lastPathComponent()
    ###最初と最後がスペースなのはWindowでNGなので置換しておく
    set boolSp to (ocidDirName's hasSuffix:(" "))
    if boolSp is true then
      set ocidDirName to (ocidDirName's stringByReplacingOccurrencesOfString:(" ") withString:(strReplaceChar))
    end if
    set boolSp to (ocidDirName's hasPrefix:(" "))
    if boolSp is true then
      set ocidDirName to (ocidDirName's stringByReplacingOccurrencesOfString:(" ") withString:(strReplaceChar))
    end if
    ###キーの数だけ繰り返し
    repeat with itemAllKeys in ocidAllKeys
      ###キーの値を取り出して
      set ocidMapValue to (ocidReplaceChar's valueForKey:(itemAllKeys))
      ###置換する
      set ocidDirName to (ocidDirName's stringByReplacingOccurrencesOfString:(itemAllKeys) withString:(ocidMapValue))
    end repeat
    ###コンテナディレクトリに置換済みのフォルダ名を付与して
    set ocidNewDirPathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(ocidDirName))
    ###移動する(移動時にリネーム)
    set listDone to (appFileManager's moveItemAtURL:(itemFilePathURL) toURL:(ocidNewDirPathURL) |error|:(reference))
    
  end repeat
  
end open

|

フォルダ名でリネーム.


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# フォルダー名 区切り文字 000三桁連番 拡張子にリネームします
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application

##############################
###設定項目
##############################
###基本名と連番を区切る文字 推奨は-ハイフンや_アンダースコア
property strDemText : "@" as text

##############################
### Wクリックで起動時
on run
  ###ドロップレットWクリック時にはファイル選択ダイアログを出す
  set strName to (name of current application) as text
  if strName is "osascript" then
    tell application "Finder" to activate
  else if strName is (name of me as text) then
    set strName to (name of me) as text
    tell application strName to activate
  else
    tell current application to activate
  end if
  ###デフォルトロケーションはデスクトップ
  set appFileManager to refMe's NSFileManager's defaultManager()
  set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
  set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
  set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
  set strMes to "選んでください"
  set aliasDirPath to (choose folder strMes default location aliasDesktopDirPath with prompt strMes without invisibles, multiple selections allowed and showing package contents) as alias
open aliasDirPath
end run


on open aliasDirPath
  set appFileManager to refMe's NSFileManager's defaultManager()
  set strDirPath to (POSIX path of aliasDirPath) as text
  set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
  set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
  set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:true)
  ###ドロップされたのがファイルの場合は処理しない
  set listResults to (ocidDirPathURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error|:(reference))
  if (item 2 of listResults) = (refMe's NSNumber's numberWithBool:true) then
    log "このURLはフォルダです"
  else
    log "このURLはファイルです"
return "このURLはファイルです"
  end if
  ##ファイル名 フォルダ名
  set ocidDirName to ocidDirPathURL's lastPathComponent()
  ##################################
  ###フォルダのコンテンツを収集
  ##################################
  set ocidEmuArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  ##プロパティ
  set ocidPropertie to {refMe's NSURLPathKey, refMe's NSURLIsRegularFileKey, refMe's NSURLContentTypeKey}
  ##オプション(隠しファイルは含まない)
  set ocidOption to refMe's NSDirectoryEnumerationSkipsHiddenFiles
  ####ディレクトリのコンテツを収集(最下層まで)
  set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertie) options:(ocidOption) errorHandler:(reference))
  ###戻り値をリストに格納
  set ocidEmuFileURLArray to ocidEmuDict's allObjects()
(ocidEmuArray's addObjectsFromArray:ocidEmuFileURLArray)
  
  ##################################
  ###収集したコンテンツから不要な要素を除外
  ##################################
  set ocidFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  ####URLの数だけ繰り返し
  repeat with itemEmuArray in ocidEmuArray
    ###################不要なファイルをゴミ箱に入れちゃう
    ####拡張子取って
    set ocidExtension to itemEmuArray's pathExtension()
    ###ファイル削除
    ###WindowのサムネイルDB削除
    if (ocidExtension as text) is "db" then
      set listResult to (appFileManager's trashItemAtURL:(itemEmuArray) resultingItemURL:(missing value) |error|:(reference))
    else
      ####URLをforKeyで取り出し
      set listResult to (itemEmuArray's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
      ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
      set boolIsRegularFileKey to item 2 of listResult
      ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
      if boolIsRegularFileKey = (refMe's NSNumber's numberWithBool:true) then
####リストにする
(ocidFilePathURLArray's addObject:(itemEmuArray))
      end if
    end if
  end repeat
  
  ##################################
  ###並び替え並び替え compare
  ##################################
  set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"absoluteString" ascending:(true) selector:"localizedStandardCompare:")
(ocidFilePathURLArray's sortUsingDescriptors:{ocidSortDescriptor})
  log ocidFilePathURLArray as list
  ##################################
  ###ファイル名を変更する
  ##################################
  ###本処理の前に初期化しておく
  set appFileManager to refMe's NSFileManager's alloc()'s init()
  ##set appFileManager to ocidFileManeger's defaultManager()
  
  set numCntFile to 1 as integer
  repeat with itemFilePathURL in ocidFilePathURLArray
    set ocidContainerDirPathURL to itemFilePathURL's URLByDeletingLastPathComponent()
    set ocidExtensionName to itemFilePathURL's pathExtension()
    set strFileNo to (text -3 through -1 of ("000" & (numCntFile as text))) as text
    set ocidNewFileName to (ocidDirName's stringByAppendingString:(strDemText))
    set ocidNewFileName to (ocidNewFileName's stringByAppendingString:(strFileNo))
    set ocidNewFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(ocidNewFileName))
    set ocidNewFilePathURL to (ocidNewFilePathURL's URLByAppendingPathExtension:(ocidExtensionName))
    ###
    set listDone to (appFileManager's moveItemAtURL:(itemFilePathURL) toURL:(ocidNewFilePathURL) |error|:(reference))
    set numCntFile to (numCntFile + 1) as integer
  end repeat
end open




|

日付追加+日付置換 リネーマー

ダウンロード - 日付置換リネーム.zip


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(*
【HOW TO MAKE DROPLET】 ドロップレット作成方法
ファイル>>書き出す… -->ファイル保存のダイアログが出ます
【1】ファイルフォーマット-->アプリケーション
【2】コード署名-->コード署名しない
保存してください
*)
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application

##############################
###設定項目
##############################
###基本名と日付部を区切る文字
property strDemText : "@" as text

##############################
### Wクリックで起動時
on run
  ###ドロップレットWクリック時にはファイル選択ダイアログを出す
  set strName to (name of current application) as text
  if strName is "osascript" then
    tell application "Finder" to activate
  else if strName is (name of me as text) then
    set strName to (name of me) as text
    tell application strName to activate
  else
    tell current application to activate
  end if
  ###デフォルトロケーションはデスクトップ
  set appFileManager to refMe's NSFileManager's defaultManager()
  set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
  set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
  set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
  set strMes to "選んでください"
  set listUTI to {"public.item"} as list
  set listAliasFilePath to (choose file strMes default location aliasDesktopDirPath with prompt strMes of type listUTI with invisibles and multiple selections allowed without showing package contents) as list
open listAliasFilePath
end run


on open listAliasFilePath
  ###処理対象のURLを格納するためのリスト
  set ocidURLArrayM to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
  ###ドロップされたエイリアスの数だけ繰り返す
  repeat with itemAliasFilePath in listAliasFilePath
    ##パスをURLに
    set aliasItemPath to itemAliasFilePath as alias
    set strItemPath to (POSIX path of aliasItemPath) as text
    set ocidItemPathStr to (refMe's NSString's stringWithString:(strItemPath))
    set ocidItemPath to ocidItemPathStr's stringByStandardizingPath()
    set ocidItemPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidItemPath))
    ###ディレクトリか?判断
    set listResults to (ocidItemPathURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error|:(reference))
    if (item 2 of listResults) = (refMe's NSNumber's numberWithBool:true) then
      log "このURLはフォルダです"
(ocidURLArrayM's addObject:(ocidItemPathURL))
    else
      ###エイリアスか?判断(シンボリックリンクは判定出来るないのでやらない)
      set listResults to (ocidItemPathURL's getResourceValue:(reference) forKey:(refMe's NSURLIsAliasFileKey) |error|:(reference))
      if (item 2 of listResults) = (refMe's NSNumber's numberWithBool:true) then
log "このURLはエイリアスです-->エイリアスは処理しない"
      else
log "このURLはファイルです"
(ocidURLArrayM's addObject:(ocidItemPathURL))
      end if
    end if
  end repeat
  ###日付番号の取得
  set strDate to doGetDateNo("yyyyMMdd-HH")
  ###処理対象のリストの数だけ繰り返し
  repeat with itemURL in ocidURLArrayM
    ##ファイル名 フォルダ名
    set ocidLastName to itemURL's lastPathComponent()
    ##コンテナ ディレクトリ(ひとつ上のディレクトリ)
    set ocidContainerDirURL to itemURL's URLByDeletingLastPathComponent()
    ##フォルダとファイルで処理分岐
    set listResults to (itemURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error|:(reference))
    ###ファイルなら拡張子を取る
    if (item 2 of listResults) = (refMe's NSNumber's numberWithBool:false) then
      set ocidExtensionName to itemURL's pathExtension()
      set ocidBaseLastName to ocidLastName's stringByDeletingPathExtension()
    else
      ###フォルダならそのまま
      set ocidBaseLastName to ocidLastName's lastPathComponent()
    end if
    ###区切り文字が含まれているか?
    if (ocidBaseLastName as text) contains strDemText then
      ###区切り文字でリストにして
      set ocidBaseLastNameArray to (ocidBaseLastName's componentsSeparatedByString:(strDemText))
      ###最後のアイテムを削除(旧日時)
ocidBaseLastNameArray's removeLastObject()
      ###テキストに戻す
      set ocidBaseLastName to (ocidBaseLastNameArray's componentsJoinedByString:(""))
    end if
    ###リネーム用の名称
    set strBaseLastName to ocidBaseLastName as text
    ###区切り文字と日付を付与
    set strBaseLastName to (strBaseLastName & strDemText & strDate) as text
    ###コンテナURLに↑の名称を付与
    set ocidBasePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:(strBaseLastName))
    ###ファイルなら拡張子を付与
    if (item 2 of listResults) = (refMe's NSNumber's numberWithBool:false) then
      set ocidSavePathURL to (ocidBasePathURL's URLByAppendingPathExtension:(ocidExtensionName))
    else
      ###フォルダならそのまま
      set ocidSavePathURL to ocidBasePathURL
    end if
    ###リネーム
    set appFileManager to refMe's NSFileManager's defaultManager()
    set listDone to (appFileManager's moveItemAtURL:(itemURL) toURL:(ocidSavePathURL) |error|:(reference))
    log item 1 of listDone
  end repeat
end open

####################
#文字置換
####################
to doReplace(argOrignalText, argSearchText, argReplaceText)
  set strDelim to AppleScript's text item delimiters
  set AppleScript's text item delimiters to argSearchText
  set listDelim to every text item of argOrignalText
  set AppleScript's text item delimiters to argReplaceText
  set strReturn to listDelim as text
  set AppleScript's text item delimiters to strDelim
return strReturn
end doReplace
####################
# 日付 doGetDateNo()
####################
to doGetDateNo(argDateFormat)
  ####日付情報の取得
  set ocidDate to current application's NSDate's |date|()
  ###日付のフォーマットを定義
  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
ocidNSDateFormatter's setDateFormat:(argDateFormat)
  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate)
  set strDateAndTime to ocidDateAndTime as text
return strDateAndTime
end doGetDateNo




|

[AVAsset]ビデオのリネーム fps入り


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# 元ファイル名 横サイズ 縦サイズ fpsに変更します
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AVFoundation"
use framework "AppKit"
use framework "CoreMedia"
use scripting additions
property refMe : a reference to current application



####################################
####ダイアログ 入力ビデオ
####################################
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
############ デフォルトロケーション
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
set listUTI to {"public.movie"}
set strMes to ("ファイルを選んでください") as text
set strPrompt to ("ファイルを選んでください") as text
try
  ### ファイル
  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
on error
  log "エラーしました"
return "エラーしました"
end try
set strFilePath to POSIX path of aliasFilePath
set ocidFilePath to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePathURL to refMe's NSURL's fileURLWithPath:(ocidFilePath)
set ocidExtensionName to ocidFilePathURL's pathExtension()
set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
set ocidBaseFileName to ocidBaseFilePathURL's lastPathComponent()
set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
##########################################
######AVAsset 基本処理
##########################################
set ocidReadAsset to refMe's AVAsset's assetWithURL:(ocidFilePathURL)
##Duration
set ocidReadAssetDuration to ocidReadAsset's duration()
log ocidReadAssetDuration as record
###総秒
set cmTime to refMe's CMTimeGetSeconds(ocidReadAssetDuration)
###時間
set numHours to (round of ((cmTime as number) / 3600) rounding down) as integer
###分
set numMinutes to (round of (((cmTime as number) - (numHours * 3600)) / 60) rounding down) as integer
###残り秒
set numSec to cmTime - ((numHours * 3600) + (numMinutes * 60))
log "時間:" & numHours & "時 " & numMinutes & "分 " & numSec & "秒"
######AVAssetTrackGroup
set ocidReadAssetTrackGArray to ocidReadAsset's trackGroups()
set numCntTrackG to (ocidReadAssetTrackGArray count) as integer
log "トラックグループ数: " & numCntTrackG
log ("トラックグループID: " & ((ocidReadAssetTrackGArray's firstObject())'s trackIDs() as integer)) as text

######AVAssetTrack
set ocidReadAssetTrackArray to ocidReadAsset's tracks()
set numCntTrack to (ocidReadAssetTrackArray count) as integer
log "トラック数は: " & numCntTrack
##
repeat with itemIntNo from 0 to (numCntTrack - 1) by 1
  set ocidTrack to (ocidReadAssetTrackArray's objectAtIndex:(itemIntNo))
  log className() of ocidTrack as text
  set strTrackID to ocidTrack's trackID() as text
  log strTrackID
  set strMediaType to ocidTrack's mediaType() as text
  if strMediaType is "vide" then
    ########################
    log "MediaType: vide ビデオトラック:トラックIDは" & strTrackID
    ## トラックの総時間
    set listAssetTrackTimeRange to ocidTrack's timeRange()
    set listStartTime to (item 1 of listAssetTrackTimeRange)
    set listDurationTime to (item 2 of listAssetTrackTimeRange)
    log listStartTime as list
    log listDurationTime as list
    ##タイムスケール
    set numAssetTrackTimeScale to ocidTrack's naturalTimeScale()
    log numAssetTrackTimeScale
    ##トラックの画面サイズ
    set recordAssetTrackNaturalSize to ocidTrack's naturalSize()
    log recordAssetTrackNaturalSize
    set numTrackWidth to (width of recordAssetTrackNaturalSize) as integer
    set numTrackHeight to (height of recordAssetTrackNaturalSize) as integer
    ##1フレームの長さ
    set recordCMTimeFrameDura to ocidTrack's minFrameDuration()
    set numFlameScale to ((value of recordCMTimeFrameDura) / (timescale of recordCMTimeFrameDura)) as number
    log numFlameScale
    set numFlameRateDura to (1 / numFlameScale)
    log numFlameRateDura
    ##フレームレート
    set numFlameRate to ocidTrack's nominalFrameRate() as number
    log numFlameRate
  else if strMediaType is "soun" then
    ########################
    log "MediaType: soun サウンドトラック:トラックIDは" & strTrackID
  end if
  
end repeat

##########################################
###### 時間処理
##########################################

###ファイル名用フォーマット
set ocidFileNameFormatter to refMe's NSDateFormatter's alloc()'s init()
ocidFileNameFormatter's setTimeStyle:(refMe's NSDateFormatterNoStyle)
ocidFileNameFormatter's setDateStyle:(refMe's NSDateFormatterNoStyle)
ocidFileNameFormatter's setDateFormat:("HH_mm_ss")
####ビデオの長さ
set ocidCalendar to refMe's NSCalendar's currentCalendar()
set ocidEndTimeComp to refMe's NSDateComponents's alloc()'s init()
ocidEndTimeComp's setHour:(numHours)
ocidEndTimeComp's setMinute:(numMinutes)
ocidEndTimeComp's setSecond:(numSec)
set ocidEndTime to ocidCalendar's dateFromComponents:(ocidEndTimeComp)
set strTimeNO to (ocidFileNameFormatter's stringFromDate:(ocidEndTime)) as text

##########################################
###### リネーム
##########################################

###時間も入れる場合
set strNewFileName to ((ocidBaseFileName as text) & "." & (numTrackWidth as text) & "x" & (numTrackHeight as text) & "." & ((numFlameRate as integer) & "." & strTimeNO & "." & ocidExtensionName)) as text

###通常
set strNewFileName to ((ocidBaseFileName as text) & "." & (numTrackWidth as text) & "x" & (numTrackHeight as text) & "." & ((numFlameRate as integer) & "fps." & ocidExtensionName)) as text

###移動 リネームURL
set ocidNewFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:(strNewFileName)

set listDone to appFileManager's moveItemAtURL:(ocidFilePathURL) toURL:(ocidNewFilePathURL) |error|:(reference)
log (item 1 of listDone) as boolean

return






|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom