AppleScript ReName

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


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

#!/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






|

フォルダーのリネーム(エラーにならないようにする)


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


###デスクトップに
tell application "Finder"
  set aliasDesktopDirPath to (path to desktop folder from user domain) as alias
end tell

#####フォルダ名『NewNameA』がなければ作る
tell application "Finder"
  ##有無を確認して
  set boolExists to exists of (folder "NewNameA" of folder aliasDesktopDirPath)
  if boolExists is false then
    ###なければ作る
make new folder at aliasDesktopDirPath with properties {name:"NewNameA"}
  end if
  set aliasNewFolderAPath to (folder "NewNameA" of folder aliasDesktopDirPath) as alias
end tell

#####フォルダ名『NewNameB』がなければ『NewNameA』を『NewNameB』に名前を変える
tell application "Finder"
  ##有無を確認して
  set boolExists to exists of (folder "NewNameB" of folder aliasDesktopDirPath)
  tell folder aliasNewFolderAPath
    if boolExists is false then
      ###なければフォルダ名を変更する
      set name to "NewNameB"
    end if
  end tell
end tell

|

フォルダの名前+連番でリネーム


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

#!/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 scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()

#############################
###設定項目 桁数だけ0を
###ゼロパディング(ゼロサプレス)=数値の桁揃え
set strZeroSupp to ("000") as text
#############################
###設定項目 接尾語 ファイル名と連番の間
set strDemText to ("_") as text

#############################
###ダイアログ
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

###UTIリスト
set listUTI to {"public.item"}

set strMes to ("ファイルを選んでくださいA") as text
set strPrompt to ("ファイルを選んでください\r内包されているフォルダの名前+連番でリネームします") as text
try
  ### ファイル選択時
  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
on error
  log "エラーしました"
return "エラーしました"
end try
if listAliasFilePath is {} then
  log "エラーしました"
return "選んでください"
end if
#############################
###フォルダ名の取得
set aliasFirstItemPath to (first item of listAliasFilePath) as alias
tell application "Finder"
  set aliasContainerDirPath to (container of aliasFirstItemPath) as alias
  set strDirName to (name of aliasContainerDirPath) as text
end tell

#############################
###ファイルURLのみを格納するリスト
set ocidFilePathURLAllArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
###まずは全部のURLをArrayに入れる
repeat with itemAliasFilePath in listAliasFilePath
  ######パス
  set aliasFilePath to itemAliasFilePath as alias
  ###UNIXパスにして
  set strFilePath to (POSIX path of aliasFilePath) as text
  ###Stringsに
  set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
  ###パス確定させて
  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath
  ###NSURLに
  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
  ###戻り値をリストに格納
(ocidFilePathURLAllArray's addObject:(ocidFilePathURL))
end repeat

###ファイルリストのソート
set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"absoluteString" ascending:(true) selector:"localizedStandardCompare:")
(ocidFilePathURLAllArray's sortUsingDescriptors:{ocidSortDescriptor})

#############################
###リネーム
###リストの数 objectAtIndexはゼロスタートなので1引く
set numCntArray to ((count of listAliasFilePath) - 1) as integer
###リストの数だけ繰り返し
repeat with itemIntNo from 0 to numCntArray by 1
  set strSeroSup to (strZeroSupp & (itemIntNo as text)) as text
  set strFileNO to (text -3 through -1 of strSeroSup) as text
  ###元ファイルURL
  set ocidItemPathURL to (ocidFilePathURLAllArray's objectAtIndex:(itemIntNo))
  ###拡張子取得
  set strExtension to (ocidItemPathURL's pathExtension()) as text
  ###コンテナディレクトリ
  set ocidContainerDirURL to ocidItemPathURL's URLByDeletingLastPathComponent()
  ###ファイル名
  set strNewFileName to (strDirName & strDemText & strFileNO & "." & strExtension)
  ###リネーム済みURLL
  set ocidNewFilePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:(strNewFileName) isDirectory:false)
  ###リネーム
  set listDone to (appFileManager's moveItemAtURL:(ocidItemPathURL) toURL:(ocidNewFilePathURL) |error|:(reference))
end repeat





|

[selection]ファイル名のリネーム基本(選択中の項目)


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

#!/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


###########################
# 処理するのは選択中の項目
###########################
tell application "Finder"
  ###選択中のファイルパス
  set listAliasFilePath to selection as list
  ###数を数えて
  set numCntSelection to (count of listAliasFilePath) as integer
  ###選択中の数が0なら処理終了
  if numCntSelection = 0 then
return "未選択処理終了"
  end if
end tell

###########################
# 選択中の項目を順番に処理する
###########################

repeat with itemAliasFilePath in listAliasFilePath
  ###エイリアスに
  set aliasFilePath to itemAliasFilePath as alias
  ###UNIXパスに
  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 ocidContainerDirPath to ocidFilePath's stringByDeletingLastPathComponent()
  ##ファイル名
  set ocidFileName to ocidFilePath's lastPathComponent()
  ##ファイル名を可変文字列に
  set ocidNewFileName to (refMe's NSMutableString's alloc()'s initWithCapacity:0)
(ocidNewFileName's setString:ocidFileName)
  ##ファイル名の文字数
  set ocidLength to ocidFileName's |length|
  set ocidRange to refMe's NSMakeRange(0, ocidLength)
  ##検索オプション
  set ocidOption to refMe's NSCaseInsensitiveSearch
  ##文字列置換
  set ocidCntReplace to (ocidNewFileName's replaceOccurrencesOfString:(" ") withString:("_") options:(ocidOption) range:(ocidRange))
  ##コンテナディレクトリに新しいファイル名で移動先パス
  set ocidNewFilePath to (ocidContainerDirPath's stringByAppendingPathComponent:(ocidNewFileName))
  ##ファイルマネージャー初期化
  set appFileManager to refMe's NSFileManager's defaultManager()
  ##移動-->リネーム
  set listDone to (appFileManager's moveItemAtPath:(ocidFilePath) toPath:(ocidNewFilePath) |error|:(reference))
  log item 1 of listDone
end repeat



return



|

画像を連番でリネーム(サイズ+解像度入り)

フォルダ選択式
フォルダ内の画像を最下層まで取得してパスの名前順に連番を振ります

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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
# 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 framework "CoreImage"
use scripting additions

property refMe : a reference to current application

on run
  set appFileManager to refMe's NSFileManager's defaultManager()
  set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
  
  set aliasDefaultLocation to ((ocidUserDesktopPath's firstObject())'s absoluteURL()) as alias
  
  set strPromptText to "フォルダをえらんでください"
  set strMesText to "画像が入ったフォルダをえらんでください"
  try
    set listFolderPath to (choose folder strMesText with prompt strPromptText default location aliasDefaultLocation with multiple selections allowed, invisibles and showing package contents) as list
  on error
    log "エラーしました"
return "エラーしました"
  end try
open listFolderPath
end run




on open listFolderPath
  ###enumeratorAtURL用のBoolean用
  set ocidFalse to (refMe's NSNumber's numberWithBool:false)
  set ocidTrue to (refMe's NSNumber's numberWithBool:true)
  ###ファイルマネジャー初期化
  set appFileManager to refMe's NSFileManager's defaultManager()
  ###ファイルURLのみを格納するリスト
  set ocidFilePathArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
  
  ####フォルダの数だけ繰り返し
  repeat with itemFolderPath in listFolderPath
    ######パス フォルダのエイリアス
    set aliasDirPath to itemFolderPath as alias
    ###UNIXパスにして
    set strDirPath to POSIX path of aliasDirPath as text
    ###Stringsに
    set ocidDirPath to (refMe's NSString's stringWithString:strDirPath)
    ###パス確定させて
    set ocidDirPath to ocidDirPath's stringByStandardizingPath
    ###NSURLに
    set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidDirPath isDirectory:true)
    ##################################
    ##プロパティ
    set ocidPropertieKey to {refMe's NSURLPathKey, refMe's NSURLIsRegularFileKey}
    ##オプション
    set ocidOption to refMe's NSDirectoryEnumerationSkipsHiddenFiles
    ####ディレクトリのコンテツを収集(最下層まで)
    set ocidEmuDict to (appFileManager's enumeratorAtURL:ocidDirPathURL includingPropertiesForKeys:ocidPropertieKey options:ocidOption errorHandler:(reference))
    ###戻り値をリストに格納
    set ocidEmuFileURLArray to ocidEmuDict's allObjects()
    
    ##############################################
    ##URLリストなのでPathのArrayにしてから
    ##############################################
    repeat with itemEmuFileURL in ocidEmuFileURLArray
###################不要なファイルをゴミ箱に入れちゃう
####拡張子取って
set ocidExtension to itemEmuFileURL's pathExtension()
###URLファイル削除
if (ocidExtension as text) is "url" then
set listResult to (appFileManager's trashItemAtURL:itemEmuFileURL resultingItemURL:(missing value) |error|:(reference))
###WindowのサムネイルDB削除
else if (ocidExtension as text) is "db" then
set listResult to (appFileManager's trashItemAtURL:itemEmuFileURL resultingItemURL:(missing value) |error|:(reference))
else
####URLをforKeyで取り出し
set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
###リストからNSURLIsRegularFileKeyのBOOLを取り出し
set boolIsRegularFileKey to item 2 of listResult
####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
if boolIsRegularFileKey is ocidTrue then
###パスにして
set ocidFilePath to itemEmuFileURL's |path|()
####リストにする
(ocidFilePathArray's addObject:ocidFilePath)
end if
end if
    end repeat
  end repeat
  (*
この時点でocidFilePathArrayには/path/to/me形式のUNIXパス形式で
リストで格納されている
*)
  ##############################
  ####並び替え フルパスで並び替え
  ##############################
  set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"self" ascending:(true) selector:"localizedStandardCompare:")
(ocidFilePathArray's sortUsingDescriptors:{ocidSortDescriptor})
  ##############################
  ####本処理
  ##############################
  set numFileCnt to 0 as integer
  ###並び変わったファイルパスを順番に
  repeat with itemFilePathArray in ocidFilePathArray
    ###カウンターカウントアップ
    set numFileCnt to numFileCnt + 1 as integer
    ###ゼロサプレス
    set strZeroSup to "0000" as text
    set strSeroSup to (strZeroSup & (numFileCnt as text)) as text
    set strSeroSup to (text -4 through -1 of strSeroSup) as text
    
    ###stringsで来るのでPATHにしておく
    set ocidFilePath to itemFilePathArray's stringByStandardizingPath()
    ####NSURL
    set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath)
    ####ファイル名を取得
    set ocidFileName to ocidFilePathURL's lastPathComponent()
    ####拡張子を取得
    set ocidFileExtension to ocidFilePathURL's pathExtension()
    ####ファイル名から拡張子を取っていわゆるベースファイル名を取得
    set ocidPrefixName to ocidFileName's stringByDeletingPathExtension
    ####コンテナディレクトリを取得
    set ocidContainerDirURL to ocidFilePathURL's URLByDeletingLastPathComponent()
    #############################
    ##### イメージ読み込み カラースペース
    #############################
    set ocidImageRep to (refMe's NSImageRep's imageRepsWithContentsOfURL:ocidFilePathURL)
    set ocidColorSpaceArray to ocidImageRep's colorSpaceName
    set strColorSpage to (ocidColorSpaceArray's objectAtIndex:0) as text
    if strColorSpage contains ".CMYK" then
set strColorName to ".CMYK"
    else if strColorSpage contains "RGB" then
set strColorName to ".RGB"
    else if strColorSpage contains "White" then
set strColorName to ".BW"
    else if strColorSpage contains "Black" then
set strColorName to ".Gs"
    else
set strColorName to ""
    end if
    ###使い終わったので解放
    set ocidImageRep to ""
    ####NSimageに格納
    set ocidImageData to (refMe's NSImage's alloc()'s initWithContentsOfURL:ocidFilePathURL)
    ###サイズ取得PT
    set ocidImageSize to ocidImageData's |size|()
    ####ポイント単位での幅と高さ
    set numPointWidth to width of ocidImageSize
    set numPointHeight to height of ocidImageSize
    ###representations取得
    set ocidImageRepArray to ocidImageData's representations()
    ###NSBitmapImageRep取得
    set ocidImageRep to (ocidImageRepArray's objectAtIndex:0)
    ####ピクセル単位での幅
    set numpixelsWidth to ocidImageRep's pixelsWide()
    ####ピクセル単位での高さ
    set numpixelsHeight to ocidImageRep's pixelsHigh()
    ####イメージの解像度
    set numCurrentDPI to ((72 * numpixelsWidth) / numPointWidth) as integer
    ####使い終わったので初期化
    set ocidImageData to ""
    ####追加名称
    set strAddFileName to ("." & numpixelsWidth & "x" & numpixelsHeight & "." & numCurrentDPI & "ppi" & strColorName & "") as text
    ####拡張子を加えて新しいファイル名
    set ocidNewFileName to ((strSeroSup as text) & strAddFileName & "." & (ocidFileExtension as text)) as text
    ####コンテナディレクトリURLに新しいファイル名を加えて新しいURL
    set ocidNewFilePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:ocidNewFileName)
    set strNewFilePath to ocidNewFilePathURL's |path|() as text
    ####################同名のファイルの有無を確認
    #####NSFileManager定義
    set objFileManager to refMe's NSFileManager's defaultManager()
    #####保存先のファイルパス
    set ocidDistFilePath to (refMe's NSString's stringWithString:strNewFilePath)
    ###ファイルパスに同名のファイルがあるか?
    set boolFileExists to (objFileManager's fileExistsAtPath:ocidDistFilePath isDirectory:false)
    
    ###同名のファイルがある場合は1をつける
    if boolFileExists is true then
#####変更後のファイル名
set strAddFileName to ("." & numpixelsWidth & "x" & numpixelsHeight & "_" & numCurrentDPI & "ppi.1") as text
set ocidNewFileName to ((ocidPrefixName as text) & strAddFileName & "." & (ocidFileExtension as text)) as text
set ocidNewFilePathURL to (ocidContainerDirURL's URLByAppendingPathComponent:ocidNewFileName)
    end if
    ###リネーム
    set boolMoveFileAndRename to (objFileManager's moveItemAtURL:ocidFilePathURL toURL:ocidNewFilePathURL |error|:(reference))
    if boolMoveFileAndRename is false then
log "失敗しました"
    end if
    ###Finderで表示
    set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
(appSharedWorkspace's selectFile:(ocidDirPath) inFileViewerRootedAtPath:("/"))
    
  end repeat
  
end open


|

[リネーム]フォルダ名でフォルダの中のファイルをリネーム

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

#!/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 scripting additions


property refMe : a reference to current application

set objFileManager to refMe's NSFileManager's defaultManager()


#################################
###フォルダ選択
#################################
###ダイアログのデフォルト
set ocidUserDesktopPathArray to (objFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to (ocidUserDesktopPathArray's objectAtIndex:0) as alias
try
  set aliasResponse to (choose folder "画像が入っているフォルダを選んでください" with prompt "フォルダを選択してください" default location aliasDefaultLocation without multiple selections allowed, invisibles and showing package contents)
on error
  log "エラーしました"
  return
end try
#################################
###選択したフォルダのパス処理
#################################
set strFilePath to POSIX path of aliasResponse as text
set ocidFilePathStr to (refMe's NSString's stringWithString:strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath
set strlastPathComponent to ocidFilePath's lastPathComponent() as text
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:true)
##############################
#####ダイアログを前面に出す
##############################
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder"
    activate
  end tell
else
  tell current application
    activate
  end tell
end if
#################################
###ファイル名の接頭語をダイアログで
#################################
set aliasIconPath to POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns" as alias
try
  set recordResponse to (display dialog "ファイル名の接頭語+連番+拡張子" with title "確認してください" default answer strlastPathComponent buttons {"OK", "キャンセル"} default button "OK" cancel button "キャンセル" with icon aliasIconPath giving up after 30 without hidden answer)
on error
  log "エラーしました"
  return "エラーしました"
  error number -128
end try
if true is equal to (gave up of recordResponse) then
  return "時間切れですやりなおしてください"
  error number -128
end if
if "OK" is equal to (button returned of recordResponse) then
  set strResponse to (text returned of recordResponse) as text
  -->この値がファイル名になる
else
  log "エラーしました"
  return "エラーしました"
  error number -128
end if
##############################################
##準備
##############################################
###enumeratorAtURL用のBoolean
set ocidFalse to (refMe's NSNumber's numberWithBool:false)
set ocidTrue to (refMe's NSNumber's numberWithBool:true)
###enumeratorAtURLL格納用のレコード
set ocidEmuDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
###enumeratorAtURLL格納するリスト
set ocidEmuFileURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
###ファイルURLのみを格納するリスト
set ocidFilePathURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
###パスのリスト
set ocidFilePathArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
####ソート済みリスト
set ocidSortedArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0

##############################################
##ディレクトリのコンテツを収集
##############################################
###収集する付随プロパティ
set ocidPropertiesForKeys to {refMe's NSURLIsRegularFileKey}
####ディレクトリのコンテツを収集 -->ここで不可視ファイルを除外
set ocidEmuDict to (objFileManager's enumeratorAtURL:ocidFilePathURL includingPropertiesForKeys:ocidPropertiesForKeys options:(refMe's NSDirectoryEnumerationSkipsHiddenFiles) errorHandler:(reference))
###戻り値用のリストに格納
set ocidEmuFileURLArray to ocidEmuDict's allObjects()

##############################################
## URLArrayにする
##############################################
####enumeratorAtURLのかずだけ繰り返し
repeat with itemEmuFileURL in ocidEmuFileURLArray
  ####URLforKeyで取り出し  -->ここでディレクトリを除外
  set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
  ###リストからNSURLIsRegularFileKeyBOOLを取り出し
  set boolIsRegularFileKey to item 2 of listResult
  ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
  if boolIsRegularFileKey is ocidTrue then
    ####リストにする
    (ocidFilePathURLArray's addObject:itemEmuFileURL)
  end if
end repeat

###解放
set ocidEmuFileURLArray to ""
set ocidEmuDict to ""
######ここで『ocidFilePathURLArray』に全ファイルのリストが入る

##############################################
## ソートする
##############################################
###NSURLのリストを一旦パスに変更
set ocidFilePathArray to (ocidFilePathURLArray's valueForKeyPath:"path")
###パスでソート
set ocidSortedArray to (ocidFilePathArray's sortedArrayUsingSelector:"localizedCaseInsensitiveCompare:")
(*
###ここのソートは色々とお好みで
https://developer.apple.com/documentation/foundation/nsstring/1414769-caseinsensitivecompare?language=objc

## CASE "IN"なので大文字小文字区別
- caseInsensitiveCompare:
- localizedCaseInsensitiveCompare:

- compare:
- localizedCompare:
- localizedStandardCompare:

*)

##############################################
## リネーム
##############################################
###ファイル番号カウントアップ
set numCntFileNo to 1 as integer

repeat with itemFilePath in ocidSortedArray
  
  ###元:ファイル パス
  set ocidORgFilePath to itemFilePath's stringByStandardizingPath
  ###拡張子
  set ocidExtensionName to ocidORgFilePath's pathExtension()
  ###コンテナパス
  set ocidContainerDirPath to ocidORgFilePath's stringByDeletingLastPathComponent()
  
  ###ファイル番号整形 4桁ゼロサプレス
  set strZeroSupp to "0000" as text
  set strCntFileNo to numCntFileNo as text
  set strCntFileNo to (strZeroSupp & strCntFileNo) as text
  set strCntFileNo to (text -4 through -1 of strCntFileNo) as text
  ###変更後のファイル名
  set strNewFileName to (strResponse & "_" & strCntFileNo & "") as text
  ###のファイル名を追加して
  set ocidNewFilePath to (ocidContainerDirPath's stringByAppendingPathComponent:strNewFileName)
  ###に拡張子を追加してリネーム後のファイル名の出来上がり
  set ocidNewFilePath to (ocidNewFilePath's stringByAppendingPathExtension:ocidExtensionName)
  ##  log ocidNewFilePath as text
  ##########################
  ###本処理 ファイル名を変更して移動
  ##########################
  set boolResponse to (objFileManager's moveItemAtPath:ocidORgFilePath toPath:ocidNewFilePath |error|:(reference))
  
  ##  log boolResponse
  
  
  set numCntFileNo to numCntFileNo + 1 as integer
end repeat






ドロップレット版

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

#!/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 scripting additions

property refMe : a reference to current application

on run
  set objFileManager to refMe's NSFileManager's defaultManager()
  set ocidGetUrlArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
  set ocidDesktopDirPathURL to ocidGetUrlArray's objectAtIndex:0
  set aliasDefaultLocation to ocidDesktopDirPathURL as alias
  
  set strPromptMessage to "フォルダを選んでください"
  set strPromptText to "フォルダを選んでください複数可"
  ####ダイアログ
  set listFilePathAlias to (choose folder strPromptMessage with prompt strPromptText default location aliasDefaultLocation with multiple selections allowed and invisibles without showing package contents) as list
  open listFilePathAlias
end run



on open listFilePathAlias
  ##ファイルマネージャー起動
  set appFileManager to refMe's NSFileManager's defaultManager()
  ##繰り返しのはじまり
  repeat with itemFilePathAlias in listFilePathAlias
    #################################
    ###選択したフォルダのパス処理
    #################################
    set strFilePath to POSIX path of itemFilePathAlias as text
    set ocidFilePathStr to (refMe's NSString's stringWithString:strFilePath)
    set ocidFilePath to ocidFilePathStr's stringByStandardizingPath
    set strlastPathComponent to ocidFilePath's lastPathComponent() as text
    set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:true)
    ##############################
    #####ダイアログを前面に出す
    ##############################
    tell current application
      set strName to name as text
    end tell
    ####スクリプトメニューから実行したら
    if strName is "osascript" then
      tell application "Finder"
        activate
      end tell
    else
      tell current application
        activate
      end tell
    end if
    #################################
    ###ファイル名の接頭語をダイアログで
    #################################
    set aliasIconPath to POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns" as alias
    try
      set recordResponse to (display dialog "ファイル名の接頭語+連番+拡張子" with title "確認してください" default answer strlastPathComponent buttons {"OK", "キャンセル"} default button "OK" cancel button "キャンセル" with icon aliasIconPath giving up after 30 without hidden answer)
    on error
      log "エラーしました"
      return "エラーしました"
      error number -128
    end try
    if true is equal to (gave up of recordResponse) then
      return "時間切れですやりなおしてください"
      error number -128
    end if
    if "OK" is equal to (button returned of recordResponse) then
      set strResponse to (text returned of recordResponse) as text
      -->この値がファイル名になる
    else
      log "エラーしました"
      return "エラーしました"
      error number -128
    end if
    ##############################################
    ##準備
    ##############################################
    ###enumeratorAtURL用のBoolean
    set ocidFalse to (refMe's NSNumber's numberWithBool:false)
    set ocidTrue to (refMe's NSNumber's numberWithBool:true)
    ###enumeratorAtURLL格納用のレコード
    set ocidEmuDict to (refMe's NSMutableDictionary's alloc()'s initWithCapacity:0)
    ###enumeratorAtURLL格納するリスト
    set ocidEmuFileURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
    ###ファイルURLのみを格納するリスト
    set ocidFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
    ###パスのリスト
    set ocidFilePathArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
    ####ソート済みリスト
    set ocidSortedArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
    
    ##############################################
    ##ディレクトリのコンテツを収集
    ##############################################
    ###収集する付随プロパティ
    set ocidPropertiesForKeys to {refMe's NSURLIsRegularFileKey}
    ####ディレクトリのコンテツを収集 -->ここで不可視ファイルを除外
    set ocidEmuDict to (appFileManager's enumeratorAtURL:ocidFilePathURL includingPropertiesForKeys:ocidPropertiesForKeys options:(refMe's NSDirectoryEnumerationSkipsHiddenFiles) errorHandler:(reference))
    ###戻り値用のリストに格納
    set ocidEmuFileURLArray to ocidEmuDict's allObjects()
    
    ##############################################
    ## URLArrayにする
    ##############################################
    ####enumeratorAtURLのかずだけ繰り返し
    repeat with itemEmuFileURL in ocidEmuFileURLArray
      ####URLforKeyで取り出し  -->ここでディレクトリを除外
      set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
      ###リストからNSURLIsRegularFileKeyBOOLを取り出し
      set boolIsRegularFileKey to item 2 of listResult
      ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
      if boolIsRegularFileKey is ocidTrue then
        ####リストにする
        (ocidFilePathURLArray's addObject:itemEmuFileURL)
      end if
    end repeat
    
    ###解放
    set ocidEmuFileURLArray to ""
    set ocidEmuDict to ""
    ######ここで『ocidFilePathURLArray』に全ファイルのリストが入る
    
    ##############################################
    ## ソートする
    ##############################################
    ###NSURLのリストを一旦パスに変更
    set ocidFilePathArray to (ocidFilePathURLArray's valueForKeyPath:"path")
    ###パスでソート
    set ocidSortedArray to (ocidFilePathArray's sortedArrayUsingSelector:"localizedCaseInsensitiveCompare:")
    (*
###ここのソートは色々とお好みで
https://developer.apple.com/documentation/foundation/nsstring/1414769-caseinsensitivecompare?language=objc

## CASE "IN"なので大文字小文字区別
- caseInsensitiveCompare:
- localizedCaseInsensitiveCompare:

- compare:
- localizedCompare:
- localizedStandardCompare:

*)
    
    ##############################################
    ## リネーム
    ##############################################
    ###ファイル番号カウントアップ
    set numCntFileNo to 1 as integer
    
    repeat with itemFilePath in ocidSortedArray
      
      ###元:ファイル パス
      set ocidORgFilePath to itemFilePath's stringByStandardizingPath
      ###拡張子
      set ocidExtensionName to ocidORgFilePath's pathExtension()
      ###コンテナパス
      set ocidContainerDirPath to ocidORgFilePath's stringByDeletingLastPathComponent()
      
      ###ファイル番号整形 4桁ゼロサプレス
      set strZeroSupp to "0000" as text
      set strCntFileNo to numCntFileNo as text
      set strCntFileNo to (strZeroSupp & strCntFileNo) as text
      set strCntFileNo to (text -4 through -1 of strCntFileNo) as text
      ###変更後のファイル名
      set strNewFileName to (strResponse & "_" & strCntFileNo & "") as text
      ###のファイル名を追加して
      set ocidNewFilePath to (ocidContainerDirPath's stringByAppendingPathComponent:strNewFileName)
      ###に拡張子を追加してリネーム後のファイル名の出来上がり
      set ocidNewFilePath to (ocidNewFilePath's stringByAppendingPathExtension:ocidExtensionName)
      ##  log ocidNewFilePath as text
      ##########################
      ###本処理 ファイル名を変更して移動
      ##########################
      set boolResponse to (appFileManager's moveItemAtPath:ocidORgFilePath toPath:ocidNewFilePath |error|:(reference))
      
      ##  log boolResponse
      
      
      set numCntFileNo to numCntFileNo + 1 as integer
    end repeat
    
    
    
    
    
    ##繰り返しの終わり
  end repeat
end open


|

その他のカテゴリー

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