setlocal EnableDelayedExpansion
cd where\to\download
set STR=
for /f "skip=2 delims=" %%F in ('P:\curl -l -u user:password ftp://ftp.example.com/directory/anotherone/') do set STR=-O "ftp://ftp.example.com/directory/anotherone/%%F" !STR!
path\to\curl.exe -v -u user:password !STR!
7条答案
按热度按时间wfauudbj1#
如果您没有绑定curl,您可能希望在递归模式下使用wget,但将其限制在一个递归级别,请尝试以下操作;
--no-parent
:在递归检索时,永远不要上升到父目录。--level=depth
:指定递归最大深度级别depth。默认最大深度为五层。--no-directories
:递归检索时不创建目录层次结构。--delete-after
:如果下载后需要删除文件,可以添加。--no-host-directories
:要正确下载到当前文件夹.“”中,不创建按域命名的目录。--no-clobber
:跳过将下载到现有文件的下载--continue
:继续获取部分下载的文件以提高稳定性cd
合并:定义目标目录因此,此示例如下所示:
v7pvogib2#
好的,考虑到您使用的是Windows,最简单的方法是使用它捆绑的标准
ftp
工具。我基于Windows XP提出了以下解决方案,希望它在其他版本上也能工作(或稍作修改)。首先,你需要为
ftp
程序创建一个批处理(脚本)文件,包含它的指令。根据你的需要命名它,并放入:第一行打开到
ftp.myftpsite.com
的ftp服务器的连接。下面两行指定ftp将要求的登录名和密码(只使用登录名和密码替换login
和pass
,不使用任何关键字)。然后,使用mget *
获取所有文件。可以使用任何通配符来代替*
。最后,你使用quit
来关闭ftp
程序而没有交互提示。如果需要先输入某个目录,可以在
mget
之前添加一个cd
命令,这应该非常简单。最后,编写该文件并运行
ftp
,如下所示:其中
-i
禁用交互性(下载文件前询问),-s
指定创建的脚本的路径。遗憾的是,Windows本身并不支持通过SSH传输文件,但在这种情况下,你可能还是想使用PuTTy工具,在这种情况下,特别感兴趣的是
pscp
,它实际上是opensshscp
命令的PuTTy对应部分。语法类似于
copy
命令,并且支持通配符:如果使用密钥文件进行身份验证,则应使用
-i path-to-key-file
传递它。如果使用密码,则为-pw pass
。它还可以使用load-load your-session-name
参数重用使用PuTTy保存的会话。izkcnapc3#
不如这样:
6tqwzwtp4#
你可以在Mac上使用如下脚本:
tzdcorbm5#
噢,我正好有你需要的东西!
并且函数
isFtpUp
和saveFtpFile
如下:编辑:
这是一个php脚本.保存它为一个.php文件,把它放在你的web服务器上,改变$ip到你想要下载文件的ftp服务器的地址(不需要是ip),创建一个名为downloadedFiles的目录在相同的目录作为这个文件.
v64noz0r6#
下面是我如何用cURL快速下载的(虽然我不确定它能下载多少文件):
为什么跳过=2?为了乘坐
.
和..
为什么分隔符=?支持名称中包含空格
a2mppw5e7#
如果您没有绑定到curl,则可能希望使用lftp,请尝试以下操作:
地点
,'password'
:将密码放在配额中--Remove-source-files
:删除下载后的文件--verbose
:很高兴看到信息,但在生产时可以随意删除set ftp:ssl-allow no;
:仅在不需要检查证书(非ssl)的情况下