FTP使用FileMaker或Applescript下载最新文件

时间:2018-05-21 13:03:47

标签: ftp applescript filemaker

我目前使用插入网址从外部FTP位置下载某些文件,我已设法使用以下卷曲选项完美地工作

  

- user“& $ usr&”:“& $ pw&”-o Stock-Summary.csv“

这可以按照预期运行并从FTP下载文件,但是,向我们提供这些文件的公司已经“移动了门柱”,可以这么说。

无论出于何种原因,他们现在为所述文件添加前缀和后缀随机数,所以我需要调整它以某种方式只获得此文件的最新版本,现在看起来像这样 -

  

7818023-Stock_Summary-035831

任何建议或不同的方法都会非常感激,因为我只是一个试图帮助一位家庭朋友的新手。

2 个答案:

答案 0 :(得分:2)

查看上一个答案Retrieving the last modified file in a directory over FTP using a bash script with curl

特别是这行Bash,

curl --user <<USERNAME>>:<<PASSWORD>> ftp://<<SERVERURL>> 2>/dev/null | grep "Stock_Summary" | awk -F\  '{print $9}' | sort -n -t- -k3,4 -k1,2 -k2,2 | tail -1

将返回与给定grep模式匹配的目录中最后修改过的文件的名称。然后,您可以获取该调用的结果,并将文件名(带有额外的标识符)提供给现有的AppleScript。

set theFileName to do shell script "<<SHELL LINE ABOVE>>"

您可能需要使用grep的文件模式来获取适合您的内容。

然后,您将返回现有代码,并将其设为类似

--user " & $usr & ":" & $pw & " -o " & theFileName

注意:删除并填写&lt;&lt;&lt;&lt;&lt;&lt;&lt;和&gt;&gt;。

在AppleScript中,这可能如下所示:

on GetFileNameToPull(server, username, password, filePattern)
    set theScriptToRun to "curl --user " & username & ":" & password & " ftp://" & server & " 2>/dev/null | grep '" & filePattern & "' | awk -F\\  '{print $9}' | sort -n -t- -k3,4 -k1,2 -k2,2 | tail -1"
    set theFileName to do shell script theScriptToRun
    return theFileName
end GetFileNameToPull

on GetFileNameFromFTPServer(server, username, password, remoteFileName, localFileName)
    set theScriptToRun to "curl --silent --show-error --user " & username & ":" & password & " ftp://" & server & "/" & remoteFileName & " -o " & localFileName
    do shell script theScriptToRun
end GetFileNameFromFTPServer

on run
    set username to "USERNAME"
    set thePassword to "PASSWORD"
    set server to "SERVERNAME"

    set pathToDownload to "/path/to/download/to"

    set theRemoteFileName to GetFileNameToPull(server, username, thePassword, "Stock_Summary")
    set theLocalFileName to pathToDownload & "/" & theRemoteFileName

    GetFileNameFromFTPServer(server, username, thePassword, theRemoteFileName, theLocalFileName)
end run

答案 1 :(得分:1)

如果你想要的是提取&#34; Stock_Summary&#34;从新的文件标识符,然后这将做到:

on StripNumbers(FileLong)
    set x to offset of "-" in FileLong
    set temp to characters (x + 1) thru -1 of FileLong as string
    set x to offset of "-" in temp
    set temp to characters 1 thru (x - 1) of temp as string
    return temp
end StripNumbers

on run
        set FileLong to "7818023-Stock_Summary-035831"
        set FileShort to my StripNumbers(FileLong)
end run

然后您可以添加扩展程序并运行FTP脚本。