PS:原始流程由ai完成,测试和debug由本人完成,正文部分是最终结果
macOS:14.0
本来不想写这篇的, 因为相关的文章在CSDN上有很多,但不知道为什么能跑通的不符合我的使用需求,所以最后还是写了这一篇。
以下步骤主要实现三个需求:
1. 右键新建文本文档txt
2. 弹出重命名弹窗
3. 重命名弹窗中默认已有README字符
4.(可选)若此目录下有重名,并不会生成新的文件
目录
实现前三个需求的版本
在macOS上创建快捷操作(Quick Action)来实现右键菜单选项,可以使用Automator应用。以下是具体步骤,帮助你在当前目录下新建文本文档:
-
打开Automator应用:
- 你可以在Launchpad中找到Automator,或者使用Spotlight搜索(按Cmd + 空格键,然后输入“Automator”)。
-
创建新的文稿:
- 在Automator中,选择“新建文稿”。
-
选择类型:
- 在弹出的窗口中,选择“快速操作”(Quick Action),然后点击“选择”。
-
设置工作流程:
- 在顶部的“工作流程收到当前”下拉菜单中,选择“文件或文件夹”。
- 在右边的“工作流程”区域,点击“添加输入”,并选择“Finder.app”。
-
添加AppleScript操作
- 在左侧的操作库中,找到并拖动“运行AppleScript”操作到右侧的工作流程区域。
- 在“运行AppleScript”操作中,输入以下脚本:
on run {input, parameters} set defaultAnswer to "README" set dialogText to "请输入文本文档的名称:" set fileName to text returned of (display dialog dialogText default answer defaultAnswer) repeat with f in input set filePath to POSIX path of (f as alias) set parentPath to do shell script "dirname " & quoted form of filePath set newFilePath to parentPath & "/" & fileName & ".txt" do shell script "touch " & quoted form of newFilePath end repeat return input end run
这个版本使用了
dirname
命令来获取父目录路径
-
保存快速操作:
选择“文件” > “存储”,为你的快速操作命名,例如“新建文本文档”,然后点击“存储”。 -
使用快速操作:
打开Finder,选择一个文件夹,右键点击,然后在菜单中选择“快速操作” > “新建文本文档”。这将会弹出一个对话框,允许你输入文本文档的名字,默认名称为“README”,并在选中的文件夹中创建一个以你输入的名字命名的文本文档。
实现所有四个需求的版本
基本操作同上,只需改动AppleScript代码。
添加AppleScript操作
以下是修改后的AppleScript代码,包含检查文件名是否重复的步骤:
on run {input, parameters}
set defaultAnswer to "README"
set dialogText to "请输入文本文档的名称:"
repeat
set fileName to text returned of (display dialog dialogText default answer defaultAnswer)
set fileExists to false
repeat with f in input
set filePath to POSIX path of (f as alias)
set parentPath to do shell script "dirname " & quoted form of filePath
set newFilePath to parentPath & "/" & fileName & ".txt"
-- 检查文件是否存在
try
do shell script "test -e " & quoted form of newFilePath
set fileExists to true
end try
end repeat
if fileExists then
display dialog "文件名已存在,请选择不同的文件名。" buttons {"OK"} default button "OK"
else
exit repeat
end if
end repeat
-- 创建新文件
repeat with f in input
set filePath to POSIX path of (f as alias)
set parentPath to do shell script "dirname " & quoted form of filePath
set newFilePath to parentPath & "/" & fileName & ".txt"
do shell script "touch " & quoted form of newFilePath
end repeat
return input
end run
这个脚本在创建文件之前检查父目录中是否已经存在同名文件。如果存在,用户将被提示输入不同的文件名,直到输入的文件名不重复为止。
最终窗口如下: