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 {"720p", "HDTV", "x264", "IMMERSE", "-", "E01", "…", "E02", "EVOLVE"}
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, ".", " ")
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
            set p to path to "/Volumes/LaCie/Midia/Series/"
            --make new folder at p with properties {name:newbase}
            make new folder with properties {name:folderName, location:p}
        else
            move theFile to POSIX file "/Volumes/LaCie/Midia/Series/" & newbase as text
            set name of result to newbase
        end if
    else
        move theFile to POSIX file "/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

特别是在不存在时应该创建文件夹的部分(其目的是自动对电视剧集进行排序)。

日志文件:

NSLocalizedDescription = "Finder got an error: Can\U2019t make \"/Volumes/LaCie/Midia/Series/\" into type constant.";
    NSLocalizedFailureReason = "Can\U2019t make \"/Volumes/LaCie/Midia/Series/\" into type constant.";
    OSAScriptErrorAppAddressKey = "<NSAppleEventDescriptor: [0x0,c00c \"Finder\"]>";
    OSAScriptErrorAppNameKey = Finder;
    OSAScriptErrorBriefMessageKey = "Can\U2019t make \"/Volumes/LaCie/Midia/Series/\" into type constant.";
    OSAScriptErrorExpectedTypeKey = "<NSAppleEventDescriptor: 'enum'>";
    OSAScriptErrorMessageKey = "Finder got an error: Can\U2019t make \"/Volumes/LaCie/Midia/Series/\" into type constant.";
    OSAScriptErrorNumberKey = "-1700";
    OSAScriptErrorOffendingObjectKey = "<NSAppleEventDescriptor: 'utxt'(\"/Volumes/LaCie/Midia/Series/\")>";
    OSAScriptErrorRangeKey = "NSRange: {0, 0}";

有任何想法吗?谢谢!

编辑:

所以,@lauri 帮助我完成了移动部分,唯一错误的是文件被复制,而不是移动,这意味着原始文件保留在同一个地方。我希望它被丢弃或完全移动。有任何想法吗?

编辑2:

所以,我已经实现了@lauri 的建议,但我仍然有一个错误(在 mv 命令上),有什么想法吗?

    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
4

1 回答 1

0

替换path toPOSIX file并使用at该位置的说明符:

tell application "Finder"
    make new folder at POSIX file "/tmp" with properties {name:"new folder"}
end tell

FWIW,这个问题是在尝试使用 hazel 移动文件时 Applescript 错误的后续问题。

显然,当目标位于不同的卷上时,move 命令会复制文件。您可以改用 do shell 脚本:

if newbase contains "Season" then
    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
    do shell script "mv " & quoted form of POSIX path of theFile & " /Volumes/LaCie/Midia/Filmes/"
end if
于 2013-05-21T23:17:54.793 回答