如何使用批处理删除FTP文件夹的所有文件
How to delete all files of a FTP folder using batch
我从几个帖子中搜索了这个问题的解决方案,但没有找到。我想构建一个批处理文件,该文件转到 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
对于这个解决方案,我注意到如果我使用命令 "delete" 并指定文件,它就可以工作。像这样:
echo 删除 312312312.csv >> ftpcmd.dat
但出于某种原因,使用 mdel(如示例)它不会。
你知道更好的方法吗?
谢谢
mdel
命令需要列出远程目录中的文件。问题是 Windows 内置 ftp.exe
仅支持 FTP 活动模式。在这种模式下,服务器需要打开到您机器的传入连接,以传输列表,默认情况下被 Windows 防火墙或您与服务器之间的任何其他 firewall/proxy/NAT 阻止的内容。这使得 ftp.exe
如今最没用。
有关详细信息,请参阅我关于 network configuration for FTP active mode 的文章。
使用任何其他第 3 方 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, by replacing the ftp://
with the ftpes://
。
另请参阅 converting Windows FTP script to WinSCP script 指南。
(我是WinSCP的作者)
我找到了解决此问题的方法:
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 感谢软件和解释。
此致!
我从几个帖子中搜索了这个问题的解决方案,但没有找到。我想构建一个批处理文件,该文件转到 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
对于这个解决方案,我注意到如果我使用命令 "delete" 并指定文件,它就可以工作。像这样: echo 删除 312312312.csv >> ftpcmd.dat
但出于某种原因,使用 mdel(如示例)它不会。
你知道更好的方法吗?
谢谢
mdel
命令需要列出远程目录中的文件。问题是 Windows 内置 ftp.exe
仅支持 FTP 活动模式。在这种模式下,服务器需要打开到您机器的传入连接,以传输列表,默认情况下被 Windows 防火墙或您与服务器之间的任何其他 firewall/proxy/NAT 阻止的内容。这使得 ftp.exe
如今最没用。
有关详细信息,请参阅我关于 network configuration for FTP active mode 的文章。
使用任何其他第 3 方 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, by replacing the ftp://
with the ftpes://
。
另请参阅 converting Windows FTP script to WinSCP script 指南。
(我是WinSCP的作者)
我找到了解决此问题的方法: 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 感谢软件和解释。
此致!