如何使用批删除FTP文件夹的所有文件

时间:2016-10-17 19:41:29

标签: batch-file cmd ftp ftp-client

我从几个帖子中搜索到找到这个问题的解决方案,但无法找到它。我想构建一个批处理文件,该文件转到FTP上的文件夹,然后下载所有记录,然后删除所有记录。

到目前为止,我尝试使用命令" mdel ",请参阅以下代码:

@echo off
echo user ftpUser> ftpcmd.dat
echo Password>> ftpcmd.dat
echo cd /tst/>>ftpcmd.dat
echo binary>> ftpcmd.dat
echo prompt n>> ftpcmd.dat
echo mget *.*>> ftpcmd.dat
echo mdel *.*>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat 77.99.999.999
del ftpcmd.dat

对于这个解决方案,我注意到如果我使用命令"删除"并指定它工作的文件。像这样:     echo delete 312312312.csv>> ftpcmd.dat

但由于某些原因使用mdel(如示例),它没有。

你知道更好的方法吗?

由于

2 个答案:

答案 0 :(得分:1)

mdel命令需要列出远程目录中的文件。问题是Windows内置ftp.exe仅支持FTP活动模式。在此模式下,服务器需要打开与您的计算机的传入连接,传输列表,默认情况下由Windows防火墙或您和服务器之间的路径上的任何其他防火墙/代理/ NAT阻止。这使得ftp.exe现在最无用。

有关详细信息,请参阅我的文章network configuration for FTP active mode

使用任何其他第三方FTP客户端。大多数人支持没有这类问题的被动模式。

正如您自己发现的那样,一个这样的客户是WinSCP

使用WinSCP scripting,您的批处理文件就像:

@echo off

winscp.com /log=ftp.log /command ^
    "open ftp://ftpUser:Password@77.99.999.999/" ^
    "cd /tst" ^
    "get *" ^
    "rm *" ^
    "exit"

但是,如果服务器支持,请考虑使用secure FTP over TLS/SSL,将ftp://替换为ftpes://

另见converting Windows FTP script to WinSCP script指南。

(我是WinSCP的作者)

答案 1 :(得分:0)

我找到了解决此问题的方法: http://winscp.net/eng/docs/scriptcommand_rm#examples

使用这个软件,我能够同时获取和删除多个文件,现在代码如下: 选项批量中止 选项确认关闭

open ftp://user:Password@77.XX.XXX.XXX
cd /tst/
get *.* d:\www\*.bak
rm *.*
EXIT

无论如何,谢谢你的帮助。

@Martin Prikryl感谢您提供软件和解释。

问候!