我有一个包含以下文件的文件夹:
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是否容易,我应该注意什么
答案 0 :(得分: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项为“Elephant”,第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
我建议首先创建所有目标文件的列表,然后对于列表中的每个文件,根据其名称创建文件夹,移动文件,最后在文件位于最终位置时重命名。
加盐调味。