AppleScript Focus /重命名文件然后单击任意位置

如何解决AppleScript Focus /重命名文件然后单击任意位置

|
on run {input}
    set filepath to POSIX path of input
    do shell script \"touch \" & quoted form of filepath & \"untitled\"
    return input
end run
到目前为止,我所拥有的东西可以正常工作,但是有没有办法专注于文件然后触发重命名呢?我不希望重命名是自动的,只是触发事件(例如在选择文件时按\“ return \”)。而且我不想使用任何形式的模态... 快速补充问题:有没有一种设置方法,这样我就不必直接选择文件夹或文件,但是只要在文件夹中的空白处单击即可,例如可以单击它?现在,我在
Finder.app
中将我的“已选择服务接收”到“ \1ѭ\”。 ==更新代码==
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
如果我对路径进行硬编码,它将起作用!但是我怎样才能得到一个4英镑的作品呢?     

解决方法

这是一种方法。我认为在模态窗口中询问姓名会更好,但是您可以尝试一下。注意,在此代码中您未使用\“ POSIX path \”。 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
    ,
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
不打开。 我不知道为什么,但是当在列视图中使用ѭ11时,您只能在前窗口目标的全部内容中选择项目。在其他视图中不会发生相同的事情,因此似乎是一个错误。 修复已编辑问题中的代码:
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)
(That14和最后一行仅用于测试。)     ,我已经基于@ regulus6633创建了一个AppleScript,但是进行了一些改进。 注意:该答案最初是作为AskDifferent答案发布的。为了方便起见,我正在此处复制/粘贴。 这个想法是创建一个Automator工作流程并使用以下步骤为其分配快捷方式: 打开Automator并创建服务; 将输入设置为无输入,将应用程序设置为Finder.app; 将运行AppleScript工作流元素拖放到灰色空间; 将这个AppleScript的内容放在文本框中; 用合理的名称保存工作流程(如“新文件”); 转到设置->键盘->快捷方式->服务,并为其分配快捷方式。 现在,让我们展示一下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中。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-