如何通过在图标上删除文件来运行PHP脚本?


2

我有一个php脚本,它以文件名作为参数。当我从终端窗口运行它时,我输入

./my_script.php file_to_process.txt

它很棒!

我想要做的是在我的Dock上有一个图标,当我将文件放到它上面时,它将执行php脚本并提供删除文件的完整路径作为该脚本的参数。

这可能吗?你能提供一步一步的指示吗?

Answers:


2

是的,这应该可以使用Automator。我没有从命令行使用php,所以我不确定它是如何工作的,但这是一般指令。

  1. 打开Automator(它位于Applications文件夹中)。
  2. 选择创建应用程序。 选择应用程序模板
  3. 选择Library下的Utilities并选择Run Shell Script并将其拖到右侧区域。 选择Utilities,Run Shell Script
  4. 在运行shell脚本操作的文本区域中,删除“cat”并写入要运行的脚本的完整路径。
  5. 选择将输入传递给stdin。
  6. 将应用程序保存到某处并将其拖到停靠栏中。
  7. 通过将文件拖到它来试试。

我按照你的指示。当我在automator中运行它,并向“获取指定的Finder项目”添加查找器操作时,它工作正常。然后我删除“获取指定的Finder项目”并保存它,然后尝试删除它上面的文件,它不起作用 - 任何想法?
斯科特

事实证明,上面的步骤5应该设置为STDIN,然后应该读取STDIN。STDIN不包含文件流,而是包含已删除的文件名。
Scott

@Scott,好的,很酷,我会改变说明。很高兴你得到它的工作!
Lizzan

0

您需要使用Automator.app

创建一个应用程序并添加一个Utilities-> Run Shell Script以包含你的my_script.php


0

您也可以使用AppleScript执行此操作。

下面的脚本递归打开所有文件/文件夹。对于每个文件,执行phpScriptPath定义的PHP脚本,将文件路径作为参数传递。

要创建应用程序:

1.打开AppleScript编辑器

2.粘贴以下代码:

属性phpScriptPath:“/ myPHP \ Scripts / my_script.php” -  PHP脚本的绝对路径

on open droppedItems
    processItems(droppedItems)
结束了

on processItems(theItems)
    在theItems中重复使用theItem
        如果isDirectory(theItem)那么
            processItems(theItem)
        其他
            做shell脚本phpScriptPath&“”引用形式((theItem as alias)的POSIX路径)
        万一
    结束重复
结束processItems

- 这个功能来自这里:
-  http://stackoverflow.com/questions/6872007/applescript-how-to-check-if-something-is-a-directory-or-a-file
on isDirectory(someItem) -  someItem是一个文件引用
    将filePosixPath设置为引用形式((someItem as alias)的POSIX路径)
    将fileType设置为(执行shell脚本“file -b”&filePosixPath)
    如果fileType以“directory”结尾,则返回true
    返回false
结束是目录

3.设置PHPscript的绝对路径

编辑脚本的第一个属性行

4.导出为应用程序

文件菜单>导出:

  • 选择应用名称和目的地
  • 选择导出为Application
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.