0

基本上我需要下载一个每天更新和更改名称的 txt 文件,然后在 Excel 中打开它。我的问题是我正在为 MAC 执行此操作,但我找不到 VBA 的必要模块(据我所知)

所以我求助于编写一个 PERL 脚本来实际下载文件,然后我将只制作一个 VBA 脚本来打开最新的文件。我已成功使用 net:ftp 模块实际下载文件,按日期搜索并仅下载最新文件的最佳方法是什么?此外, fetch 会是更好的选择吗?ftp 站点不需要凭据。

#!/usr/bin/perl
use Net::FTP;
use strict;
use warnings;

my $ftp = Net::FTP->new("ftp.site", Debug => 0)
 or die;

$ftp->login("anonymous",'-anonymous')
 or die, $ftp->message;

$ftp->cwd("/public/doc/cor/")
 or die;

$ftp->get("20130614c.txt")
 or die , $ftp->message;

$ftp->quit;
4

2 回答 2

2

由于您的文件名是基于日期的,您可以这样做:

$ftp->get( [sort($ftp->ls)]->[-1] )

因为那将是您的最新文件...

于 2013-06-17T20:30:55.227 回答
1

如果您始终可以根据当天检查名称,则只需创建今天日期的格式化字符串:

my($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
$year += 1900;
$mon += 1;

my $today = sprintf("%04d%02d%02d", $year, $mon, $mday);

现在您有了根据约定的文件名:

$ftp->get("${today}c.txt")

如果您需要当前日期以外的日期,则可以使用日期数学库来计算您需要的日期并进行相应的格式化。我个人一直使用Date::Calc.

当然,如果文件在 ftp 主机上尚不存在,请确保妥善处理错误。

于 2013-06-17T20:40:06.650 回答