Applescript创建日期

Applescript创建日期,applescript,automator,Applescript,Automator,我正在尝试创建一个自动执行器服务,它可以执行以下操作: 输入是选定的文件 创建新文件夹并复制所选文件 HELP*Applescript获取创建日期/时间,并过滤掉一分钟前创建的所有文件(名为input[contains]的变量 图像路径]已传递到此脚本) 重命名文件 调整文件大小 除第三步外,我的一切都正常工作,这一点很重要,因为如果服务在同一文件夹中再次运行,则已调整大小的文件将再次调整大小。为了解决这个问题,我想创建一个Applescript,它可以过滤掉超过40秒/1分钟前创建的任何内

我正在尝试创建一个自动执行器服务,它可以执行以下操作:

  • 输入是选定的文件
  • 创建新文件夹并复制所选文件
  • HELP*Applescript获取创建日期/时间,并过滤掉一分钟前创建的所有文件(名为input[contains]的变量 图像路径]已传递到此脚本)
  • 重命名文件
  • 调整文件大小
除第三步外,我的一切都正常工作,这一点很重要,因为如果服务在同一文件夹中再次运行,则已调整大小的文件将再次调整大小。为了解决这个问题,我想创建一个Applescript,它可以过滤掉超过40秒/1分钟前创建的任何内容

到目前为止,我有这个,它返回了一个错误:

on run {input, parameters}


set theFileDate to (creation date of input as string)
display dialog theFileDate

return input
end run

我正在尝试显示对话框,以便验证代码是否正常工作,并查看日期/时间的格式。您必须使用Finder的脚本字典来访问creation date属性

on run {input, parameters}
    tell application "Finder"
        set theFileDate to (creation date of input as string)
    end tell
    display dialog theFileDate
    return input
end run

我在编写你的代码。我相信这更接近

-- This script will (when completed) filter the list of Finder items in the input parameter
-- returning as an output only those files that meet the specified criteria.
on run {input, parameters}
    -- if no items were selected, tell the user and cancel the workflow
    if ((count of input) < 1) then
        display alert "This workflow will do nothing because no items were selected in the Finder"
        set CANCEL_WORKFLOW to -128
        error CANCEL_WORKFLOW
    end if
    -- select the items to be output by this action
    set output to {}
    repeat with thisItem in input
        -- display the thisItem's path name and creation date
        display dialog (thisItem as text)
        set theFileDate to (creation date of (get info for thisItem))
        display dialog theFileDate as text
        ------ replace the next line of code with a compare of theFileDate to current date -----
        set addThisItem to true
        -----------------------------------------------------------------------------------------------
        -- add items that meet the criteria to the output (which is a list)
        if addThisItem then
            set output to output & thisItem
        end if
    end repeat
    -- return the output of this action to be the input of the next action
    return output
end run
--此脚本将(完成后)过滤输入参数中的查找程序项列表
--仅返回满足指定条件的文件作为输出。
运行时{input,parameters}
--如果未选择任何项目,请告知用户并取消工作流
如果((输入计数)<1),则
显示警报“此工作流不会执行任何操作,因为在查找器中未选择任何项目”
将“取消”工作流设置为-128
取消工作流时出错
如果结束
--选择此操作要输出的项目
将输出设置为{}
在输入中重复此项
--显示此项目的路径名和创建日期
显示对话框(此项为文本)
将文件日期设置为(创建日期(获取此项目的信息))
将“文件日期”对话框显示为文本
------将下一行代码替换为比较文件日期和当前日期-----
将addThisItem设置为true
-----------------------------------------------------------------------------------------------
--将符合条件的项添加到输出(这是一个列表)
如果添加此项,则
将output设置为output&此项
如果结束
结束重复
--将此操作的输出返回为下一个操作的输入
返回输出
终点
让我知道这是怎么回事

--凯德尔

处理文件后,只需设置标签索引颜色。并过滤不符合标签颜色的颜色

在本例中,我过滤掉标签索引为紫色的项目

将处理过的项目涂成紫色,然后在第二次运行时忽略


试试这个。请注意,您可以将“60”更改为“40”或任何其他所需的秒数

on run {input, parameters}
    set filterDate to (current date) - 60
    set filteredFiles to {}

    repeat with i from 1 to count of input
        set thisFile to item i of input
        if (class of thisFile) is text then set thisFile to thisFile as alias
        set creationDate to (creation date of (get info for thisFile))
        if creationDate is greater than or equal to filterDate then
            set end of filteredFiles to (item i of input)
        end if
    end repeat

    return filteredFiles
end run

不,我在工作流中尝试了你的脚本。它不起作用。名为“input”的参数是一个列表。你需要一个循环(见下面我的答案)。此外,将日期转换为字符串可以显示它,要比较日期,您不希望将日期作为字符串,您希望使用关系运算符(如“大于”或“>”或类似的东西)比较某种日期或数字。@Kaydell我的观点是您需要将行包装在
告诉应用程序“Finder”
块中,为了得到约会,这是他唯一一件难以找回的事情。我只是这样写来证明它会输出一个合适的日期——我不打算为他写整个脚本。我认为你的代码不会运行。1.输入是一个列表,所以您确实需要一个循环。2.要获得创建日期,我相信您需要在单个文件上执行“获取信息”。您是否尝试运行代码?我无法让它运行。下面是获取文件日期的方法:“获取(选择文件的信息)的创建日期”。@Kaydell
input
可以是任何东西,如果它是自动操作的话。如果是多个文件,是的,您需要在每个文件上循环。除此之外,它确实是独立运行的(我的意思是不在
on run
块中)。如果您不相信我,请在AppleScript编辑器中运行此命令。“输入可以是任何东西,如果它是自动操作。”好的,我意识到这一点,但当我设置自动操作来处理文件和文件夹时,我将服务限制为仅接受来自查找器的选定文件和文件夹,或者我将第一个操作设置为“获取选定的查找器项目”,然后我知道我的工作流将得到什么。我不希望最终用户通过让他们选择任何东西,比如说一句话,然后运行我的服务来获得神秘的错误消息。您开发的软件的每个部分都有其先决条件和后决条件。我不想添加标签颜色,因为这会造成很多混乱,尽管我已经尝试过滤掉包含“-Resized”的项目,因为我已经在工作流程的末尾添加了此项。你几乎可以用自动过滤器来完成,但是你可以用“不包含”来过滤,这就是我需要的。我开始了一个新的问题,因为我被困在这个新的过滤器任务。虽然现在我明白了,我应该把它贴在这里。对不起,我是新来的。[连结]