Apple脚本运行,但没有保存的docx出现(没有出现错误)

时间:2018-05-17 01:01:19

标签: applescript

此代码运行,但由于某些原因,运行后没有文件保存,也不会出现错误。想法?

的AppleScript

tell application "Finder"
    set fl to files of folder POSIX file "/Users/abc/folder" as alias list
end tell

repeat with f in fl

tell application "Microsoft Word"
    activate
    open f
    set theActiveDoc to the active document
end tell

delay 1

tell application "System Events"
    keystroke "a" using command down
    keystroke "c" using command down
end tell

tell application "Finder"
    set filename to name of f
    set the_path to POSIX file "/Users/abc/folder2/" & filename
end tell

tell application "Microsoft Word"
    close theActiveDoc saving no
    set new_document to make new document
    paste special (text object of selection) data type paste text
    save as new_document file name the_path
    close active document
end tell

end repeat

溶液

  

将the_path设置为(POSIX文件" / Users / abc / folder2 /"作为文本)&文件名

1 个答案:

答案 0 :(得分:0)

这是一条完全不同的路线。此解决方案完全绕过必须使用Microsoft Word。我已将此脚本配置为遍历指定文件夹中的每个文件(假设此文件夹中的所有文件都是Microsoft Word文档,纯文本文件或富文本文件)...获取每个文件的内容,并且在新文件夹中创建一个包含该内容的新.docx文件

如果此代码保存为应用程序,您可以将文件和/或文件夹直接拖到此应用程序的图标上进行处理。如果直接启动此应用程序,它将询问您是要处理一个或多个文件,还是处理包含其所有内容的文件夹

on open theFiles2
    --  Handle the case where the script is launched by dropping
    -- file or folders onto this applet's icon
    tell application "Finder"
        set theFiles to files of entire contents of folder theFiles2 as alias list
    end tell
    repeat with aFile from 1 to count of theFiles
        set thisFile to item aFile of theFiles
        set thisFile2 to thisFile
        set thisFile to POSIX path of thisFile
        tell application "Finder"
            set fileName to name of thisFile2
            set fileName to (characters -5 thru 1) of fileName as string
            set thePath to (path to desktop as text) & fileName
            try
                set newFolder to make new folder ¬
                    at (path to desktop) ¬
                    with properties {name:fileName}
            end try
        end tell
        set thePath to POSIX path of alias thePath
        set theScript to do shell script "textutil -convert docx " & quoted form of ¬
            thisFile & " -output " & quoted form of thePath & quoted form of fileName & ".docx"
    end repeat
end open

on run
    --  Handle the case where the script is launched without any dropped files
    set sourceFolder to display dialog ¬
        "Would You Like To Choose A Folder With All Of Its Contents Or Individual Files Within A Folder?" buttons {"Cancel", "Select Files", "Select Folder"} ¬
        default button 3 ¬
        cancel button ¬
        "Cancel" with title ¬
        "withTitleText" with icon 1 ¬
        giving up after 20
    if button returned of sourceFolder is "Select Folder" then
        set sourceFolder to ((choose folder) as text)
        tell application "Finder"
            set theFiles to files of entire contents of folder sourceFolder as alias list
        end tell
        repeat with aFile from 1 to count of theFiles
            set thisFile to item aFile of theFiles
            set thisFile2 to thisFile
            set thisFile to POSIX path of thisFile
            tell application "Finder"
                set fileName to name of thisFile2
                try
                    set fileName to (characters -5 thru 1) of fileName as string
                end try
                set thePath to (path to desktop as text) & fileName
                try
                    set newFolder to make new folder ¬
                        at (path to desktop) ¬
                        with properties {name:fileName}
                end try
            end tell
            set thePath to POSIX path of alias thePath
            set theScript to do shell script "textutil -convert docx " & quoted form of ¬
                thisFile & " -output " & quoted form of thePath & quoted form of fileName & ".docx"
        end repeat
    else if button returned of sourceFolder is "Select Files" then
        set theFiles to choose file with prompt ¬
            "Choose Files" invisibles false ¬
            multiple selections allowed true ¬
            as text
        repeat with aFile from 1 to count of theFiles
            set thisFile to item aFile of theFiles
            set thisFile2 to thisFile
            set thisFile to POSIX path of thisFile
            tell application "Finder"
                set fileName to name of thisFile2
                try
                    set fileName to (characters -5 thru 1) of fileName as string
                end try
                set thePath to (path to desktop as text) & fileName
                try
                    set newFolder to make new folder ¬
                        at (path to desktop) ¬
                        with properties {name:fileName}
                end try
            end tell
            set thePath to POSIX path of alias thePath
            set theScript to do shell script "textutil -convert docx " & quoted form of ¬
                thisFile & " -output " & quoted form of thePath & quoted form of fileName & ".docx"
        end repeat
    end if
end run

这段代码可能有点草率,可能有一个更好的解决方案但是...它似乎在我运行最新版本的macOS High Sierra的系统上运行良好