使用applescript写入新的空文件

时间:2016-11-02 19:53:29

标签: applescript

我有一个非常奇特的文件系统,我想使用Applescript自动化。我使用的脚本大部分都是有效的,但是有一小步我似乎无法正确调整。脚本应该像这样运行;运行时,脚本会要求用户选择一个文件夹。选择后,脚本将使用特定扩展名(在本例中为jpg)查找文件夹中的所有文件。接下来,脚本使用图片文件名作为新名称为每个jpg文件创建一个空白文本文档。完成后,新文本文档应具有从单独的预先声明的文件输入的文本。

例如,我运行该文件并选择一个包含3个图像的文件夹(cake1.jpg,pie2.jpg,icecream3.jpg)该脚本创建了3个文本文档(cake1.txt,pie2.txt,icecream3.txt)但是然后需要将Script2Text.rtf中的文本复制到每个创建的新文档中。以下是我所使用的脚本部分以及我尝试使用

的部分
set aFolder to choose folder "Select folder to be processed"
set extensionText to text of "txt"

set theDocument to ((path to desktop as Unicode text) & "Script2Text.rtf")
set pasteText to (read file theDocument from 1)

set astid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "{"
set pasteText to text from text item 2 to -1 of pasteText


set AppleScript's text item delimiters to "\\marg"
set part1 to text item 1 of pasteText
set part2 to text from text item 2 to -1 of pasteText
set AppleScript's text item delimiters to astid
set RTFreturn to "\\" & return
set pasteText to RTFreturn & RTFreturn & part1 & text from paragraph 2 to -1 of part2

tell application "Finder"
    set allFiles to every file of entire contents of aFolder whose name extension is in {"jpg"}
    repeat with x in allFiles
        set FileName to name of x
        if FileName contains ".jpg" then
            set AppleScript's text item delimiters to "jpg"
            if the (count of text items of FileName) is 2 then
                set NewName to (((first text item of FileName) as string) & extensionText & ((last text item of FileName) as string)) as text
                tell application "Finder" to make file at aFolder with properties {name:NewName}

            else
                display dialog ("Text appears more than once. No changes made to " & FileName)
            end if
        end if

    end repeat
end tell

我似乎无法将此代码的其余部分同步并将文本添加到文件中。我知道如果直接指定目标文件,ADDING的代码可以工作,(比如我指定了setDocument,如果我设置了第二个文件,然后将doc2access设置为该文件,我可以写它没问题)但是我可以&# 39;似乎围绕如何从自动创建步骤指定文件,这将有所帮助。

这是我发现的用于写入文件的代码。我只需要指定它来写入正在创建的文件。

set doc2access to (open for access file doc2 with write permission)
    try
        set z to -1
        repeat until ((read doc2access from z for 1) is "}")
            set z to z - 1
        end repeat
        write pasteText to doc2access starting at z
        on error msg
            display dialog msg buttons {"OK"} default button 1 with icon stop
end try
close access doc2access

我想要做的是获取文档NewName(这是在脚本的这一部分中创建的文件的变量)并将文本添加到它。就像它为cake1.txt生成文本文件一样,而不是编写代码将文本直接放入cake1.txt,我希望用文本创建文件。

UPDATE 我能够通过替换

解决我的问题
tell application "Finder" to make file at aFolder with properties {name:NewName}

tell application "Finder" to write pasteText to ((make file at aFolder with properties {name:NewName}) as alias) 

2 个答案:

答案 0 :(得分:0)

我知道你已经有了一个解决方案,但我只想补充我关于Applescript冗长并向你展示的评论,以及任何想要在未来尝试做类似事情的人,只需使用{{1 }和bash这两个版本都包含在OS X的所有版本中。

使用Applescript选择文件夹后,假设您要创建一个Perl文件以匹配每个.txt文件,您可以使用.jpg运行类似的内容:

do shell script

那说...... "从find someDirectory -iname \*.jpg -exec perl -MFile::Copy -e '($txt=$ARGV[0])=~s/JPG$/txt/i; copy("Text2File",$txt)' {} \; 开始,查找以someDirectory结尾的所有子目录中的所有文件(不区分大小写),并为每个子文件运行一个Perl脚本。 Perl脚本将JPG文件名作为参数,并用JPG替换(不区分大小写)JPG,并将名为txt的文件(包含您的文本)复制到文件名,我们的名字是刚刚计算出来。"

答案 1 :(得分:-1)

set theWords to read file (((path to desktop) as text) & "Script2Text.rtf")
tell application "Finder" to repeat with someName in {"cake1", "pie2", "icecream"}
    try
        write theWords to ((make file with properties {name:someName}) as alias)
    end try
end repeat