2010-10-06 93 views
0

我有一個包含以下文件的文件夾:使用的Automator和AppleScript基於文件名的文件移動到文件夾

Elephant.19864.archive.other.pdf 
Elephant.17334.other.something.pdf 
Turnip.19864.something.knight.pdf 
Camera.22378.nothing.elf.pdf 

我想將這些文件移動到以下結構

Archive 
    Elephant 
     Elephant.19864.pdf 
     Elephant.17334.pdf 
    Turnip 
     Turnip.19864.pdf 
    Camera.HighRes 
     Camera.HighRes.22378.pdf 

的生成的文件由單詞或多個單詞組成,然後是一系列數字,然後是其他單詞,然後是擴展名。我想將這些文件移動到一個文件夾中,在數字之前命名爲單詞或單詞,並刪除數字和擴展名之間的所有單詞(本例中爲.pdf)。

如果該文件夾不存在,那麼我必須創建它。

我認爲這將是很簡單的使用Automator或AppleScript,但我似乎無法得到我的頭。

這是很容易使用的Automator /的AppleScript若有的話,我應該看着

回答

3

這很容易,它只是並不明顯在第一。有些事情可以讓你開始。

要解析的文件名來獲得文件夾的名稱,你需要將名稱分隔成列表...

set AppleScript's text item delimiters to {"."} 
set fileNameComponents to (every text item in fileName) as list 
set AppleScript's text item delimiters to oldDelims 
--> returns: {"Elephant", "19864", "archive", "other", "pdf"} 

名單有一個1開始的索引,所以第1項是「大象」第5項是「pdf」。混搭的文件名一起,那麼所有你需要的是這個

set theFileName to (item 1 of fileNameComponents & item 2 of fileNameComponents & item 5 of fileNameComponents) as string 

要創建文件夾,只需使用下面的...

tell application "Finder" 
    set theNewFolder to make new folder at (theTargetFolder as alias) with properties {name:newFolderName, owner privileges:read write, group privileges:read write, everyones privileges:read write} 
end tell 

要移動一個文件,你需要的是這個。 ..

tell application "Finder" 
    set fileMoved to move theTargetFile to theTargetFolder 
end tell 

要重命名文件,使用類似下面的...

set theFileToRename to theTargetFilePath as alias -- alias is important here 
set name of theFileToRename to theFileName 

我建議首先創建所有目標文件的列表,然後爲列表中的每個文件創建基於其名稱的文件夾,移動該文件,最後在其最終位置進行重命名。

加鹽調味。

相關問題