on run {input}
set filepath to POSIX path of input
do shell script "touch " & quoted form of filepath & "untitled"
return input
end run
到目前为止,它是否有效,但是有没有办法然后关注文件然后触发重命名?我不希望重命名是自动的,只是触发事件(比如在选择文件时按“返回”)。而且我不想使用任何形式的模态...
快速提问:有没有办法设置这个,这样我就不必直接选择文件夹或文件,但可以通过点击白色空间来实现文件夹,只要它在Finder中?现在我在files or folders
中将“服务接收已选中”改为“Finder.app
”。
==更新后的代码==
on run {input}
set filepath to POSIX path of input
do shell script "touch " & quoted form of filepath & "untitled"
tell application "Finder"
activate
set target of Finder window 1 to POSIX file "/Users/oscargodson/Documents/designs/untitled"
end tell
tell application "System Events"
tell process "Finder"
keystroke return
end tell
end tell
return input
end run
如果我硬编码它的工作路径!但是如何将其作为var
起作用?
答案 0 :(得分:3)
这是一种方式。我认为你要求名字的模态窗口会更好,但你可以试试这个。请注意,此代码中不使用“POSIX路径”。 Applescript不使用POSIX路径。另外,{input},如其周围的括号所示,是项目列表。因此,您对列表中的项目采取行动,在这种情况下,我们会对第一项采取行动。
set filepath to item 1 of input
tell application "Finder"
activate
reveal filepath
end tell
tell application "System Events"
tell process "Finder"
keystroke return
end tell
end tell
编辑:使用您更新的代码,这是一个工作脚本......
on run {input}
if (class of input) is not list then set input to {input}
set theFolder to (item 1 of input) as text
try
alias theFolder
tell application "Finder"
if (class of item theFolder) is not folder then error "input is not a folder."
activate
set theFile to make new file at folder theFolder with properties {name:"untitled"}
reveal theFile
end tell
delay 0.2
tell application "System Events"
tell process "Finder"
keystroke return
end tell
end tell
on error theError number errorNumber
tell me
activate
display dialog "There was an error: " & (errorNumber as text) & return & return & theError buttons {"OK"} default button 1 with icon stop
return
end tell
end try
return input
end run
答案 1 :(得分:1)
tell application "Finder"
activate
reopen -- in case there are no open windows
set target of Finder window 1 to POSIX file "/Applications/Safari.app"
end tell
reveal
和select
始终打开一个新窗口,set target
和set selection
不会。
我不知道为什么,但是当它在列视图中使用set selection
时,您只能选择前窗目标的整个内容中的项目。在其他视图中也不会发生同样的事情,因此它似乎是一个错误。
修改已编辑问题中的代码:
on go(input)
set p to POSIX path of (input as text)
set p2 to p & "untitled"
do shell script "touch " & p2
tell application "Finder"
reopen
activate
set target of Finder window 1 to POSIX file p2
end tell
delay 0.3 -- time to release modifier keys
tell application "System Events" to keystroke return
end go
tell application "Finder"
set fold to folder (path to documents folder)
end tell
go(fold)
(on go
和最后一行仅用于测试。)
答案 2 :(得分:0)
我已经创建了一个基于@ regulus6633的AppleScript,但有一些改进。
注意:此答案最初发布为AskDifferent answer。为方便起见,我在这里复制/粘贴。
我们的想法是创建一个Automator工作流程并使用以下步骤为其分配快捷方式:
现在,让我们来看看AppleScript:
set file_name to "untitled"
set file_ext to ".txt"
set is_desktop to false
-- get folder path and if we are in desktop (no folder opened)
try
tell application "Finder"
set this_folder to (folder of the front Finder window) as alias
end tell
on error
-- no open folder windows
set this_folder to path to desktop folder as alias
set is_desktop to true
end try
-- get the new file name (do not override an already existing file)
tell application "System Events"
set file_list to get the name of every disk item of this_folder
end tell
set new_file to file_name & file_ext
set x to 1
repeat
if new_file is in file_list then
set new_file to file_name & " " & x & file_ext
set x to x + 1
else
exit repeat
end if
end repeat
-- create and select the new file
tell application "Finder"
activate
set the_file to make new file at folder this_folder with properties {name:new_file}
if is_desktop is false then
reveal the_file
else
select window of desktop
set selection to the_file
delay 0.1
end if
end tell
-- press enter (rename)
tell application "System Events"
tell process "Finder"
keystroke return
end tell
end tell
为方便起见,我将此AppleScript放入this GitHub Gist。