[关闭]
@tangyikejun 2019-12-15T23:10:27.000000Z 字数 1181 阅读 1400

Mac OS X 快速添加新文件

效率 macOS


本文为 automator (中文名为 自动操作)的练习之作,尚有许多不足。

如果你想在 OS X 系统中快速添加新文件可直接参考此文

简介

本文使用 automator 创建了一个应用程序 autocreatefile 。运行这个应用程序时,它会尝试获取你所选中的文件或者文件夹,然后询问你希望生成的新的文件名,最后在所选文件同文件夹下,或者所选文件夹下创建一个你设定的文件名的文件。如果该文件已经存在,那么什么都不会发生。

操作

下面是具体的操作:

打开 automator 软件,中文名为 自动操作 。

依次选择 文件 - 新建 - 应用程序 。然后从左边的资源库里依次往右边添加如下图所示的六个操作。
概览

第一个操作是 获取所选的访达项目 。这个操作的作用是获取到你选取的文件或者文件夹的路径。如果什么都没选,那么后面的步骤就无法进行下去了。

第二个操作是 设定变量的值 。这个操作的作用是将上一个操作获得的路径赋值给 filename。这是为了先将filename保存起来,不然一会儿后面要用的时候找不到。
设定变量的值

第三个操作是一段 AppleScript 脚本。这段脚本的作用是使得当前运行的程序的窗口是活动窗口,且获得焦点。简而言之就是说程序的窗口显示在所有窗口的最上方,并且之后的输入框会在选中状态。
获得焦点

第四个操作是请求文本,这个操作的作用是引导用户输入文件名。这里勾了忽略此操作的输入,是为了避免前面传递过来的路径把 请求文本的默认文本替换掉。
请求文本

第五个操作是将刚才保存起来的filename变量重新获取出来。它会和前面请求文本获得的文件名一起传递给下面的操作。
获得变量的值

最后一个操作是一段 python 脚本。Shell 类型设置为 python ,传递输入设置为 作为自变量。这样设置后,前面的两个参数会以列表的形式存储到python 的sys.argv 中,如果是 至 stdin,那么需要在python中通过标准输入输出的读取进行读入。
代码

具体代码如下

  1. import os,sys
  2. print len(sys.argv)
  3. if len(sys.argv) > 2: # 至少得有三个参数传进来
  4. if os.path.isdir(sys.argv[2]): # 如果传的是文件夹路径,那么直接就是这个路径
  5. path = sys.argv[2]
  6. else: # 如果传的是文件路径,那么需要获取到其所在的文件夹路径
  7. path = os.path.dirname(sys.argv[2])
  8. file = open(os.path.join(path,sys.argv[1] or "new.txt"),"a+") # a+ 如果已经有同名文件,不会改变原文件内容,如果没有的话,会有提示
  9. print "succ"
  10. file.close()

添加到访达快捷栏

前面提到的文章里,介绍了添加应用程序到访达快捷栏的方法

快捷栏

局限

由于我的这个应用程序依赖于选择文件或者文件夹,所以在什么都没选的情况下,可能会创建失败。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注