如何用FileMaker或AppleScript下载带随机前后缀的最新FTP文件?
解决FileMaker中FTP下载带随机前后缀文件名的最新文件问题
嗨,Sean!作为新手遇到这种文件名变动的情况确实有点挠头,我给你几个实操性强的方案,一步步来就能搞定~
方案一:用curl先筛文件再下载(最通用的方法)
这个思路是先从FTP服务器上找出所有带Stock_Summary的文件,再挑出最新的那个下载,分三步走:
1. 先在终端里测试curl命令(新手先在终端跑通更稳妥)
打开你的终端(Mac用终端,Windows用PowerShell/命令提示符),先执行这个命令列出目标目录下的相关文件:
curl --user "你的FTP用户名:你的FTP密码" ftp://你的FTP服务器地址/存放文件的路径/ -l -t | grep "Stock_Summary"
参数说明:
-l:只返回文件名,不显示其他冗余信息-t:按文件修改时间排序(最新的文件会排在最后)grep "Stock_Summary":过滤出包含关键词的文件名,精准定位目标文件
如果这个命令能返回类似7818023-Stock_Summary-035831的文件列表,再加上tail -n 1就能直接拿到最新的文件名:
curl --user "你的FTP用户名:你的FTP密码" ftp://你的FTP服务器地址/存放文件的路径/ -l -t | grep "Stock_Summary" | tail -n 1
执行完你就能看到最新的那个目标文件名啦。
2. 把命令搬到FileMaker脚本里
在FileMaker里创建一个新脚本,步骤如下:
- 第一步:用
Execute Shell Script执行上面的命令,把结果存到变量$latestFileName里
脚本里的命令要拼上你的用户名密码变量,比如:"curl --user " & $usr & ":" & $pw & " ftp://你的FTP服务器地址/存放文件的路径/ -l -t | grep Stock_Summary | tail -n 1" - 第二步:用
Insert URL或者继续用Execute Shell Script执行下载命令,拼上刚才拿到的最新文件名:curl --user " & $usr & ":" & $pw & " -o Stock-Summary.csv ftp://你的FTP服务器地址/存放文件的路径/" & $latestFileName
方案二:找厂商要更省心的方式(优先试试这个!)
如果厂商那边能配合的话,这是最简单的方法:
- 问问他们能不能给一个固定名称的文件链接,比如
latest-Stock_Summary.csv,让这个链接始终指向最新的文件,这样你还是用原来的下载命令就行,完全不用改逻辑 - 或者问问有没有API能返回最新文件的名称,直接调用API拿到文件名再下载
新手注意事项
- 先在终端把curl命令跑通,再放到FileMaker里,这样出问题更容易排查
- 如果用
Execute Shell Script,要确保你的FileMaker客户端/服务器有执行shell脚本的权限(Mac一般默认可以,Windows可能需要调整一下系统权限) - 变量拼接的时候要注意引号的位置,别漏了或者多了引号导致命令报错
慢慢来,先搞定终端里的命令,再移到FileMaker脚本,很快就能解决啦!
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

