0

所以,我有这个:

on hazelProcessFile(theFile)
    set text item delimiters to ":"
    set filename to last text item of (theFile as text)
    set text item delimiters to "."
    if filename contains "." then
        set base to text items 1 thru -2 of filename as text
        set extension to "." & text item -1 of filename
    else
        set base to filename
        set extension to ""
    end if
    set text item delimiters to {"WEB.DL.DD5.1.H.264.HWD", "WEB-DL.AAC2.0.H.264-NTb", "WEB-DL.DD5.1.H.264-CtrlHD", "WEB.DL.DD5.1.H.264", "PMP", "720p", "HDTV", "x264", "IMMERSE", "-", "E01", "…", "E02", "EVOLVE", "DIMENSION", "E03", "E04", "E05", "E06", "E07", "E08", "E09", "E10", "E11", "E12", "E13", "E14", "E15", "E16", "E17", "E18", "E19", "E20", "E21", "E22", "E23", "E24", "E25", "E26", "E27", "E28", "E29", "E30", "2012", "2013", "2014", "2015", "2016", "FoV", "FOV", "fov", "1080p", "X264", "AFG", "afg", "xvid", "XviD", "XVID", "INTERNAL", "PROPER", "FQM", "fqm", "LOL", "lol", "REWARD", "reward", "WEB", "DL", "AAC2", "H.264", "NTb", "CtrlHD", "DD5", "eztv", "EZTV", "WEB", "VTV", "mSD", "CTU", "hdtv", "evolve", "immerse", "+", "PublicHD", "HWD"}
    set ti to text items of base
    set text item delimiters to ""
    set newbase to ti as text
    set newbase to Replace(newbase, "S0", "Season ")
    set newbase to Replace(newbase, "S1", "Season 1")
    set newbase to Replace(newbase, "S2", "Season 2")
    set newbase to Replace(newbase, ".", " ")
    set newbase to Replace(newbase, "    ", "")
    set newbase to Replace(newbase, "   ", "")
    set newbase to Replace(newbase, "  ", "")
    set folderLocation to "/Volumes/LaCie/Midia/Series"
    set folderName to newbase as text
    tell application "Finder"
        if newbase contains "Season" then
            if not (exists folder (POSIX file "/Volumes/LaCie/Midia/Series/" & newbase as text)) then

                -- make new folder at POSIX file "/Volumes/LaCie/Midia/Series/" with properties {name:newbase as text}
                -- move theFile to POSIX file "/Volumes/LaCie/Midia/Series/" & newbase as text
                do shell script "d=/Volumes/LaCie/Midia/Series/" & quoted form of newbase & "
                mkdir -p \"$d\"
                mv " & quoted form of POSIX path of theFile & " $d"



            else
                -- move theFile to POSIX file "/Volumes/LaCie/Midia/Series/" & newbase as text
                do shell script "d=/Volumes/LaCie/Midia/Series/" & quoted form of newbase & "
                mv " & quoted form of POSIX path of theFile & " $d"

                set name of result to newbase
            end if
        else
            -- move theFile to POSIX file "/Volumes/LaCie/Midia/Filmes/"
            do shell script "mv " & quoted form of POSIX path of theFile & " /Volumes/LaCie/Midia/Filmes/"
        end if
    end tell
end hazelProcessFile

on Replace(input, x, y)
    set text item delimiters to x
    set ti to text items of input
    set text item delimiters to y
    ti as text
end Replace

我在应该创建文件夹并移动文件(mv 命令)的部分特别遇到错误。该脚本是从榛规则激活的,它应该发现文件是电影还是电视剧集(清理文件名),并将其移动到相应的文件夹(如果它不存在,它会创建文件夹) 有任何想法吗?谢谢!

4

1 回答 1

0

尝试:

set d to quoted form of ("/Volumes/LaCie/Midia/Series/" & newbase)
do shell script "mkdir -p " & d & " ; mv " & quoted form of (POSIX path of theFile) & space & d
于 2013-06-02T04:01:14.757 回答