我正在创建一个automator pdf打印插件。
当您选择打印插件时,pdf的文件名是输入(通常是/ var / something /documentName.pdf)
我想让documentName稍后在Rename Finder Item中使用它。
我正在使用atm applescript来实现这一目标。
on run {input, parameters}
tell application "Finder"
set fileName to name of ((POSIX file input) as alias)
end tell
return fileName as string
end run
问题是,只有当我在显示posix路径的applescript之前放置一个Ask for Text Action时,这才有效。
如果我删除了Ask for Text操作,那么AppleScript就会失败。
工作流程位于https://www.dropbox.com/s/jp4t9pen3gvtyiq/Rename-Action.workflow.zip
我想这很简单,但这是我正在创建的第一个applescript / automator工作流程。
由于评论失败
解决方案
on run {input, parameters}
tell application "Finder"
set fileName to ((name of first item of input) as string)
end tell
return fileName
end run
由@Ken发布在下面。
谢谢!
答案 0 :(得分:1)
我使用此AppleScript创建了一个测试工作流程:
on run {input, parameters}
tell app "System Events"
display dialog ((class of input) as string)
end
return input
end run
显示“列表”。然后我将其修改为:
on run {input, parameters}
tell application "System Events"
display dialog ((class of first item of input) as string)
end tell
return input
end run
显示“别名”。
因此,PDF工作流的输入是一个别名列表。写下你的脚本时应该记住它,它应该有效。例如,这有效:
on run {input, parameters}
tell application "System Events"
display dialog ((name of first item of input) as string)
end tell
return input
end run
答案 1 :(得分:0)
使用AppleScript时,它真的有助于忘记您对文件路径的所有了解。如果你在路径中思考,你将在脑海中进行路径数学,所有这些都是不必要的工作。你想要使用的是对象。在执行文件操作时,您使用别名对象。
如果你在Finder中查看你正在使用的PDF,然后转到File▶Make Alias,那么你将创建一个别名文件。您可以将该别名文件拖放到其所在磁盘的文件系统周围,将其放在任何文件夹中,当您打开别名文件时,它仍将始终打开您的原始PDF,即使您忘记了原始路径名称PDF文件有,甚至更重要的是:即使PDF已移动到文件系统中的其他位置,别名也将打开PDF。别名可以帮助您。您不需要知道路径名称。
在AppleScript中,您不使用文件,而是使用别名,而对别名所做的任何操作也都是对原始文件进行的。因此,您不需要知道文件的路径名来更改其名称 - 您只需要使用它的别名即可。您将该别名存储在变量中。
所以你想要做的是将输入PDF别名设置为变量,然后,该变量就是你给Finder重命名的变量。您不必知道任何路径。输入PDF存储在文件系统中的位置无关紧要 - 别名将负责处理。
这是AppleScript的一个示例,它演示了将别名作为输入,然后重命名该别名(因此,原始文件:)的原则。
tell application "Finder"
set theInputFile to (choose file)
-- do a workflow here
set the name of theInputFile to "Renamed" & "." & the name extension of theInputFile
end tell
以下是上述脚本的逐行说明:
即使你想使用包含原始输入文件的文件夹,或者想知道输入文件所在的磁盘,你仍然不需要使用路径名:
tell application "Finder"
set theInputFile to (choose file)
set theContainingFolder to open the container of theInputFile
set theInputFileDisk to the disk of theInputFile
end tell
如果你想知道输入文件是什么类型的文件,你不必查看文件扩展名并弄明白,你可以这么说:
set theInputFileKind to the kind of theInputFile
if theInputFileKind is equal to "Portable Document Format (PDF)" then
-- do stuff
end if
如果你想在特定文件夹(例如主文件夹)中工作,那么有一些特殊的属性,比如“主文件夹的路径”,以便以下脚本打开“〜/ Public / Drop Box”任何系统,无论用户名是什么:
tell application "Finder"
activate
set theHomeFolder to the path to the home folder as alias
set theDropBoxFolder to folder "Drop Box" of folder "Public" of theHomeFolder
open theDropBoxFolder
end tell
如上所示,您可以将磁盘和文件夹结构作为对象进行操作,因此无需在路径中进行思考。考虑将变量设置为要与之交互的对象。
答案 2 :(得分:0)
解决方案
on run {input, parameters}
tell application "Finder"
set fileName to ((name of first item of input) as string)
end tell
return fileName
end run
<@>作为@Ken的帖子
谢谢!