我有一个非常奇特的文件系统,我想使用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)
答案 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