从AppleScript路径中提取文件扩展名

时间:2012-10-16 04:27:30

标签: directory applescript filenames filepath file-extension

我正在编写一个Apple脚本,最终将标记所有iTunes出口的商业广告。但是我遇到了AppleScript路径的一个简单问题,EyeTV应用程序将其作为录制位置返回。这是上下文:

set recordingID to 370404006
set myid to recordingID as integer
tell application "EyeTV"
    set eyetvr_file to get the location of recording id myid as alias
end tell
return eyetvr_file
  

别名“Macintosh HD2:Documents:EyeTV Archive:South Park.eyetv:000000001613eaa6.eyetvr”

现在我需要提取包含路径和文件前缀000000001613eaa6(使用this question),这样我就可以在文件000000001613eaa6.edl中查找相应的商业标记。这是打嗝:

tell application "Finder"
    set eyetv_path to container of eyetvr_file
    set root_name to name of eyetvr_file
    set fext to name extension of eyetvr_file
end tell

结果是,

  

eyetv_path:应用程序“Finder”的磁盘“Macintosh HD2”的文件夹“Documents”的文件夹“EyeTV Archive”的文件“South Park.eyetv”

     

root_name:“000000001613eaa6.eyetvr”

     

fext:“”

fext应该是“.eyetvr”,而不是空字符串。如何从eyetvr_file或root_name中正确提取“.eyetvr”?我尝试了一堆像

这样的黑客攻击
set fext to name extension of (eyetvr_file as document)

但这会给出错误,

  

错误“无法制作别名”Macintosh HD2:文档:EyeTV存档:South Park.eyetv:000000001613eaa6.eyetvr \“进入类型文档。”编号-1700来自别名“Macintosh HD2:Documents:EyeTV Archive:South Park.eyetv:000000001613eaa6.eyetvr”to document

2 个答案:

答案 0 :(得分:1)

Finder无法识别所有文件扩展名。您可以使用文本项分隔符删除最后一部分。

do shell script "touch /tmp/some.file.eyetvr"
set text item delimiters to "."
tell application "Finder"
    set n to name of file (POSIX file "/tmp/some.file.eyetvr")
    if n contains "." then set n to (text items 1 thru -2 of n) as text
    n -- some.file
end tell

答案 1 :(得分:0)

迷你评论显然不允许发布代码,所以这里是我对Lauri Ranta的好解决方案的编辑:

do shell script "touch /tmp/some.file.eyetvr"
set delims to AppleScript's text item delimiters
set AppleScript's text item delimiters to "."
tell application "Finder"
    set n to name of file (POSIX file "/tmp/some.file.eyetvr")
    if n contains "." then set n to (text items 1 thru -2 of n) as text
    n -- some.file
end tell
set AppleScript's text item delimiters to delims

当我完成该项目时,我会发布一个指向EyeTV-commercial-marking-script-for-iOS的链接。