带有正则表达式的FTP命令行批处理脚本

时间:2014-01-10 22:11:45

标签: regex command-line ftp

我正在寻找一个使用Windows命令行运行的FTP工具。 我正在尝试连接到服务器并下载与指定正则表达式匹配的文件,然后将其删除。

我开始查看Windows FTP命令行工具 - 它确实允许脚本文件,但命令似乎不支持正则表达式...只有单个文件或文件掩码(例如* .txt)

有谁知道支持这种情况的任何此类ftp客户端?或者我离开时看着自己编写(例如在.Net库中使用正则表达式列出输出并发出单独的get和delete请求?)。 (如果我不能在一个简单的批处理文件中执行此操作,也许我可以在支持ftp客户端的.Net库上获得一些建议吗?)

当然,免费也是理想的,:))

谢谢。

感谢。

1 个答案:

答案 0 :(得分:1)

你可以安装Perl(免费:Strawberry Perl或ActiveState Perl),然后使用以下程序:

use strict;
use warnings;
use Net::FTP;
my $server = 'your.server.here';
my $user = 'my_username';
my $pass = 'my_secret';
my $pattern = qr{\.exe$}; # perl regex, this matches *.exe

my $ftp = Net::FTP->new($server) or die "connect failed: $!";
$ftp->login($user,$pass) or die "login failed";
## maybe do $ftp->cwd(...) to change working dir
my @files = $ftp->ls; # directory listing;
@files = grep { m{$pattern} } @files or die "no matching files found";

for my $file (@files) {
    $ftp->get($file) or die "download $file failed";
    $ftp->delete($file) or die "delete $file failed";
}