如何创建 Finder 自动程序项,使其显示在“服务”中,以便在文件夹内创建新的文本文件?我使用 TextMate,因此如果解决方案与编辑器无关(而不是使用 TextEdit),效果会更好。
答案1
我的做法是:创建一个虚拟文本文件,并将其存储在文档中的某个文件夹中(每次服务运行时都会将其用作模板)。然后,我创建一个工作流(服务),如下所示:
您现在要做的就是右键单击要放置新文件的文件夹,然后选择通过保存此工作流创建的服务。
要打开新创建的文件,您可以添加“打开 Finder 项目”操作,其中您显然会选择 TextMate 而不是 TextEdit。要使其与编辑器无关,您可以告诉它使用其默认应用程序打开,它就会这样做。
如果在运行时询问名称对您来说非常重要,您可以添加获取文本操作,并将其分配给第二个变量,然后在复制操作后添加重命名操作并说替换文本,用文本变量替换模板文件的名称。默认情况下,您不能以我描述的方式使用文本变量,但以下帖子提供了一种解决方法。我知道它在 10.6 下有效,在早期版本的 OSX 下可能有效,也可能无效。
看这里获取说明
答案2
这不是一个自动化操作,但解决了我想要的新文件的问题:http://ignorethecode.net/blog/2009/05/31/creating-new-documents/。查看名为“更好的解决方案”的解决方案(页面底部)。
答案3
这应该有效:
do shell script "echo '[text for the text file]' > [path to folder & file].txt"
如果您只想要一个空的文本文件,请尝试以下操作:
do shell script " > [path to folder and file].txt"
编辑:我再次阅读了您的问题...这是一个 AppleScript。我对普通终端的了解比对 Automator 和 AppleScript 的了解多,但我认为您可以从 Automator 调用 AppleScript?
答案4
try
tell application "Finder"
set ans to text returned of (display dialog "" default answer "")
set opn to 0
set fn to "new.txt"
if ans is "," then
set opn to 1
else if ans is "/" then
set opn to 2
else if character -1 of ans is "," then
set fn to text 1 thru -2 of ans
set opn to 1
else if character -1 of ans is "/" then
set fn to text 1 thru -2 of ans
set opn to 2
end if
if character -1 of fn is "." then
set fn to fn & "txt"
end if
try
set p to target of window 1
on error
set p to desktop as alias
end try
set f to make new file at p with properties {name:fn}
set selection to f
if opn is 1 then
open f
else if opn is 2 then
open f using (path to application "TextMate")
end if
end tell
end try
我正在使用这个快速脚本,但它也应该作为 Automator 服务运行。是的,即使以 AppleScript 标准来看,这个脚本也太丑陋了。