AppleScriptRename

画像ファイル名をリネームする

こんな感じのファイルを
Website_image00280709_143437

こんな感じにリネームします
Website_image00280709_143451

(*
画像ファイル名をリネームする
簡易版

x縦 解像度 カラー を付加します


*)

---■■■■ ダブルクリックの始まり
on run
---プロンプトの文言改行が使えます\nを入れます
set theWithPrompt to "画像ファイルをリネームします"
---ファイル選択ダイアログのデフォルトのディレクトリ
set theDownloadsFolderPath to path to downloads folder from user domain
---Uniform Type Identifier指定
---詳しくは http://goo.gl/6jAQa Uniform Type Identifier
set theFileType to "public.image,com.adobe.pdf,com.adobe.photoshop-image" as text
---のファイルタイプをリスト形式に整形する
set AppleScript's text item delimiters to {","}
set theFileTypeList to every text item of theFileType
---ダイアログを出して選択されたファイルは「open」に渡す
open (choose file default location theDownloadsFolderPath ¬
with prompt theWithPrompt ¬
of type theFileTypeList ¬
invisibles true ¬
with multiple selections allowed without showing package contents)
end run


---■■■■ openドロップの始まり
on open DropObj

set theSepDe to "_"

tell application "Finder"
---■■■■ 繰り返しの始まり
repeat with ObjFiles in DropObj
---オブジェクトのエイリアスを取得
set theAlias to ObjFiles as alias
---オブジェクトの情報を取得
set theFileInfo to info for ObjFiles as alias
---ファイルパスをUNIX形式で取得
set theOrgMoviePath to POSIX path of ObjFiles as text
---エイリアス形式をテキストに変換
set theAliasPath to theAlias as text
---ファイル名を取得
set theName to (name of theFileInfo) as text
---拡張子を取得
set theNameExtension to (name extension of theFileInfo) as text
---エイリアスパスからファイル名を引いてディレクトリを取得
set theDirName to my doReplace(theAliasPath, theName, "") as text
---ディレクトリをUNIXパス形式に
set theDirPath to POSIX path of theDirName as text
---初期化
set theColorSpace to ""
set numImgWidthRes to ""
set numImgHeightRes to ""
set numImgWidth to ""
set numImgHeight to ""
set theFileType to ""
---
tell application "Image Events"
launch
set objImg to open theAlias

tell objImg
properties
end tell


-------カラーモード取得
try
set theColorSpace to (color space of objImg) as text
end try
-------解像度取得
try
set {numImgWidthRes, numImgHeightRes} to resolution of objImg as list
set numImgWidthRes to (numImgWidthRes as integer) as text
set numImgHeightRes to (numImgHeightRes as integer) as text
if numImgWidthRes is not numImgHeightRes then
return "正方形ピクセルではありません"
end if
end try
-------画像の高さと幅を取得
try
set {numImgWidth, numImgHeight} to dimensions of objImg as list
set numImgWidth to (item 1 of numImgWidth) as text
set numImgHeight to (item 2 of numImgHeight) as text
end try
-------ファイルタイプ取得
set theFileType to file type of objImg as text

end tell
---区切り文字をドットに指定
set AppleScript's text item delimiters to {"."}
---ファイル名をドット毎にリストにして
set listName to (every text item of theName) as list
---最初の項目をファイル名にする
set theFileName to (item 1 of listName) as text
---区切り文字を戻す
set AppleScript's text item delimiters to {""}
---ファイル名を定義
set theNewFileName to theFileName & theSepDe & numImgWidth & "x" & numImgHeight & theSepDe & numImgWidthRes & "ppi" & theSepDe & theColorSpace & "." & theNameExtension as text

-------------------------------------------------ファイル名を変更
tell application "Finder"
try
set name of file theName of folder theDirName to theNewFileName
end try
end tell


---繰り返しの終了
end repeat

end tell

end open




to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace

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


|

[okwave]Applescriptでファイル名の一部を置換


Applescriptでファイル名の一部を置換 | MacintoshのQ&A【OKWave】


を作ってみます。

ポイントは
『数字の部分』の処理ですね。
後は文字を置き換えれば良いのでさほど難しくない。

ちょっと考えて
こんな風に考えてみました。


Website_image20130404_04717


on run
------------------------------------------------【設定項目】ファイル選択ダイアログのデフォルトのディレクトリ
set theDefLoc to path to desktop from user domain
------------------------------------------------【設定項目】Uniform Type Identifier指定
------------------------------------------------詳しくは http://goo.gl/6jAQa Uniform Type Identifierを見てください
set theFileType to "public.pdf,com.adobe.pdf" as text
---簡素の記述も出来ますPDFの場合---set theFileType to "PDF" as text
---ムービーファイルの場合---set theFileType to "public.movie,com.adobe.flash-video" as text
------------------------------------------------のファイルタイプをリスト形式に整形する
set AppleScript's text item delimiters to {","}
set theFileTypeList to every text item of theFileType
------------------------------------------------【設定項目】プロンプトの文言改行が使えます\nを入れます
------------------------------------------------Uniform Type Identifierとメッセージ
set theWithPrompt to theFileType & "\nファイルをえらんでください\n"
------------------------------------------------残りのメッセージ
set theWithPromptMes to "ファイルをドロップしても\n動作します"
------------------------------------------------ダイアログを出して選択されたファイルは「open」に渡す
open (choose file default location theDefLoc ¬
with prompt theWithPrompt & theWithPromptMes ¬
of type theFileTypeList ¬
invisibles true ¬
with multiple selections allowed without showing package contents)
end run


on open theDropObj
-----繰り返しのはじまり
repeat with theObjFiles in theDropObj

----ファイルインフォを取得
set theInfoChooseFile to info for theObjFiles
----拡張子を取得
set theExtension to name extension of theInfoChooseFile
----ファイル名を取得
set theFileName to name of theInfoChooseFile
----ファイルのエイリアスをテキストに変換
set theFilePath to (theObjFiles as alias) as text

----ファイル名の文字数を数える
set theCntFileName to the length of characters of theFileName as number
----パスの文字数を数える
set theCntFilePath to the length of characters of theFilePath as number
----パスの文字数 ー ファイル名でディレクトリ名の文字数を計算する
set theCntDirPath to theCntFilePath - theCntFileName as number
----ファイルのディレクトリ名を定義する
set theDirName to characters 1 thru theCntDirPath of (theFilePath as text)
set theDirName to my ReplaceText(theDirName, ",", "") as alias

--------ファイル名から必要部分を抜き出し
set theMainFileName to do shell script "echo " & theFileName & " | awk -F\"[\" '{print($1)}'"
set theAfterFileName to do shell script "echo " & theFileName & " | awk -F\"[\" '{print($2)}'"
--------不要な文字を削除する
set theAfterFileName to my ReplaceText(theAfterFileName, "[", "")
set theAfterFileName to my ReplaceText(theAfterFileName, "]", "")
set theAfterFileName to my ReplaceText(theAfterFileName, "-", "")
set theAfterFileName to my ReplaceText(theAfterFileName, ".", "")
------出来た文字を数字にしておく
set theFileNumber to my ReplaceText(theAfterFileName, theExtension, "") as number


----桁数によって連番を取得する
if theFileNumber < 100 then
set theFileNumber to character 1 of (theFileNumber as text) as text
set theFileNumber to my ReplaceText(theFileNumber, ",", "") as number
set theFileNumber to my ZeroSuppress(theFileNumber) as text
else if theFileNumber < 10000 then
set theFileNumber to characters 1 thru 2 of (theFileNumber as text) as text
set theFileNumber to my ReplaceText(theFileNumber, ",", "") as number
set theFileNumber to my ZeroSuppress(theFileNumber) as text
else
set theFileNumber to characters 1 thru 3 of (theFileNumber as text) as text
set theFileNumber to my ReplaceText(theFileNumber, ",", "") as number
set theFileNumber to my ZeroSuppress(theFileNumber) as text
end if
----新しいファイル名を作成
set theNewFileName to theMainFileName & "P" & theFileNumber & "." & theExtension


----ファイル名を変更する
tell application "Finder"
set name of file theFileName of folder theDirName to theNewFileName
end tell
end repeat
end open








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


----ゼロサプレスのサブルーチン
to ZeroSuppress(n)
if n < 10 then
return "00" & n
else if n < 100 then
return "0" & n
else
return n as text
end if
end ZeroSuppress


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


「q8024033.zip」をダウンロード

|

[AppleScript]ファイル名のリネーム シンプル版

アップルスクリプトでファイル名をリネームします。
シェルも使わずシンプルにしました。

シェルを使った版はこちら[LINK]OpenNewWindow
スクリプトで文字の置き換えする版はこちら[LINK]OpenNewWindow


 

■まずは
 1:選択したファイルの『パス』
 2:選択したファイルの『ファイル名』
を取得して
 3:入力した『新しいファイル名』

それぞれ
定義します。

↓クリックして拡大してみてください
797x477_applescript_01

 

■ディレクトリまでのパスを取得します。

 1:フルパスの文字数をカウント
 2;ファイル名の文字数をカウント
 3:引算でディレクトリまでの文字数を取得
 4:パスから文字数分を抜き出して
   ディレクトリまでのパスを取得します。

↓クリックして拡大してみてください
796x491_applescript_02

 

■ファイル名を変更します。

新しいファイル名をSetするだけです

↓クリックして拡大してみてください
788x418_applescript_03

 

----ファイルを選択して FileAlias に格納
set FileAlias to choose file "変更するファイルを選択"
----変更後のファイル名を指定
display dialog "ファイル名を入力" default answer "新しいファイル名"
----変更後のファイル名をNewNameに格納
set NewName to text returned of the result as Unicode text
----FileAliasをテキスト形式に変更してFilePathに格納
set FilePath to FileAlias as Unicode text
----FileAliasの情報を取得ObjInfoに格納
set ObjInfo to info for FileAlias
----ObjInfoからファイル名を抜き出しFileNameに格納
set FileName to name of ObjInfo as Unicode text
----ObjInfoから拡張子を抜き出しExtNameに格納
set ExtName to name extension of ObjInfo as Unicode text
----新しいファイル名をNewFileNameに格納
set NewFileName to NewName & "." & ExtName as Unicode text
----ファイル名の文字数を数える
set CntFileName to the length of characters of FileName
----パスの文字数を数える
set CntFilePath to the length of characters of FilePath
----パスの文字数 ー ファイル名でディレクトリ名の文字数を計算する
set CntDirPath to CntFilePath - CntFileName
----ファイルのディレクトリ名を定義する
set DirName to characters 1 thru CntDirPath of FilePath as Unicode text
----ファイル名を変更する
tell application "Finder"
set name of file FileName of folder DirName to NewFileName
end tell

 

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

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

 


  

| | コメント (0)

[AppleScript]ファイル名のリネーム

単機能です。w
ファイル名を変更(リネーム)する
アップルスクリプト
色々な場面で利用出来ると思います。

シンプルに書きましたので
分りやすいと思います。
10.6x



----ファイルを選択して FileAlias に格納
set FileAlias to choose file "変更するファイルを選択"
----変更後のファイル名を指定
display dialog "ファイル名を入力" default answer "新しいファイル名"
----変更後のファイル名をNewNameに格納
set NewName to text returned of the result as Unicode text
----FileAliasをテキスト形式に変更してFilePathに格納
set FilePath to FileAlias as Unicode text
----FileAliasの情報を取得ObjInfoに格納
set ObjInfo to info for FileAlias
----ObjInfoからファイル名を抜き出しFileNameに格納
set FileName to name of ObjInfo as Unicode text
----ObjInfoから拡張子を抜き出しExtNameに格納
set ExtName to name extension of ObjInfo as Unicode text
----新しいファイル名をNewFileNameに格納
set NewFileName to NewName & "." & ExtName as Unicode text
----ディレクトリ名をDirNameに格納
set DirName to POSIX file (do shell script "dirname " & POSIX path of FilePath) & ":" as Unicode text

----ファイル名変更
tell application "Finder"
set name of file FileName of folder DirName to NewFileName
end tell

 


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

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

 

Screencapture00220728_135606jst


こんなイメージです。


| | コメント (0)

[0]ファイルの縦横サイズ付きでリネーム

順番に記事を読む場合はこちら[LINK]OpenNewWindowからどうぞ


 

WEBの仕事なんかしていると
画像データの縦横サイズが結構必要な場面が多い
そこで
ファイル名に画像の縦横サイズを入れておけば
ファイル名を見れば良いわけです。

■ドロップレット形式で考えます。

【1】ドロップ
【2】繰り返しの始まり
【3】メインになるファイル名の定義
【4】ドロップOBJをリストにして
【5】パス
【6】ファイル名
【7】拡張子
【8】ディレクトリのパスを取得
【9】縦横サイズを取得
【10】縦横サイズから『.0』を取る
【11】縦x横_ファイル名.拡張子にファイル名を定義
【12】ファイル名をリネームする
【13】繰り返しの終わり

となります。
後はエラー制御を考えておきます。
考えられるエラーは
■ダブルクリックして開けた場合
■画像以外のファイルがドロップされた場合
■リネーム後のファイル名が同名になる
ぐらいで良いでしょうか?
流れとしては

Rename_wf001_2


ファイル名の変更部分だけですが
このような流れになります。
続く

[LINK]OpenNewWindow

| | コメント (0)

[1]ファイルの縦横サイズ付きでリネーム

【1】ドロップの始まり

ドロップレット形式ですので
ドロップ=オープンです。



これで『DropObj』って名前に
ドロップされてファイルがリストとして格納されます


| | コメント (0)

[2]ファイルの縦横サイズ付きでリネーム

【2】繰り返しの始まり

ドロップされたオブジェクト(ファイル一覧)を
ひとつずつ処理していきます。

繰り返しです。



ドロップされた『open DropObj』を
『repeat』繰り返します。
『with ObjFiles in DropObj』
『DropObj』に格納されたリストを
ひとつずつ『ObjFiles』として処理します。

って感じかな


| | コメント (0)

[3]ファイルの縦横サイズ付きでリネーム

【3】メインになるファイル名の定義

display dialog を使います。
用語解説の『StandardAdditions』にあります

選択種は
[1]ただリネームする。
[2]今日の日付を付ける
[3]キャンセル


buttons {"Rename", "RenameDate","Cancel"} default button 1

で良いでしょう




でもこれだけではダメですね。
ボタンを押した結果を取得しましょう

button returned of the result
です。
リザルト(結果)を取得出来ます。

日本語にすると

もし"RenameDate"なら結果コードとして2を設定
もし"Rename"なら結果コードとして1を設定
そして答えanswerを『MainFileName』として格納する。
キャンセルなら終了する。
って感じですね。




となります。
これでファイル名の基本的な所は決まりました。


ここまでをテキストで見ると

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





では今の所をまとめると
DropObj ドロップされたオブジェクト(リスト)
ObjFiles リストされたDropObjのひとつずつ

NameSelect ダイアログの結果で1か2のどちらか
MainFileName ダイアログの結果(テキスト)



| | コメント (0)

[4]ファイルの縦横サイズ付きでリネーム

【4】ドロップOBJのリストから
【5】パス
【6】ファイル名
【7】拡張子
を取得しましょう。


【5】パス
■theAliasNameとして『エリアス』としての名前を格納して
set theAliasName to ObjFiles as alias
■その『theAliasName』をテキスト形式に変換
set theAliasPassName to theAliasName as Unicode text

■これは番外ですがUNIXパス形式のテキストとしてパスを格納
set thePosixPass to POSIX path of ObjFiles as Unicode text


【6】ファイル名
■theFileNameとしてファイル名をテキストとして格納
set theFileName to name of ObjFiles as Unicode text


【7】拡張子
■theExeName拡張子をテキストとして格納
set theExeName to name extension of ObjFiles as Unicode text




でここまでが

「Obj.txt」をダウンロードこちら



解説入りは

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


| | コメント (0)

【10】縦横サイズから『.0』を取る


主要な画像データは"Image Events"を使えば
縦横サイズを取得出来ます。

主要なスクリプトは



このロジックで取得したイメージのサイズは
XXXX.Xpx形式で
小数点以下1位の値(といっても必ず0なんですが)
を含んでいますので
取得した値から『.0』を取り除かなくてはいけません
そこで、文字を置き換えます。



これで
例えばGetImgHeightの帰り値が360.0な場合
360
にする事が出来ます。

ImageEventsの主要部のサンプルをテキストで見る

0を置き換えるをテキストで見る

| | コメント (0)

より以前の記事一覧

その他のカテゴリー

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