0
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是有效的?

4

3 回答 3

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
于 2011-05-25T13:30:44.987 回答
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和最后几行仅用于测试。)

于 2011-05-26T06:04:41.497 回答
0

我创建了一个基于@regulus6633 的AppleScript,但有一些改进。

注意:这个答案最初是作为AskDifferent answer发布的。为了方便起见,我在这里复制/粘贴。


这个想法是创建一个 Automator 工作流程并使用以下步骤为其分配快捷方式:

  • 打开Automator并创建一个服务
  • 将 input 设置为no input,并将 application 设置为Finder.app
  • 将Run AppleScript工作流程元素拖放到灰色空间上;
  • 将此 AppleScript 的内容放入文本框中;
  • 使用合理的名称保存工作流程(例如New File);
  • 转到设置 -> 键盘 -> 快捷方式 -> 服务并为其分配快捷方式。

现在,让我们展示一下 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 放在这个 GitHub Gist中。

于 2015-04-30T16:29:38.397 回答