我家有两个摄像头,几乎每天都在创建图像。他们将它们保存到我的FTP服务器(Fritz.Box\Nas驱动器)。
文件夹结构如下:
+-2016-08-24
+-+Subfolder
+----+AnotherSubfolder
+-------+File.jpg
+-2016-08-25
+-+Subfolder
+----+AnotherSubfolder
+-------+File.jpg
+-2016-08-26
+-+Subfolder
+----+AnotherSubfolder
+-------+File.jpg
...
现在,我可以通过批处理文件(在Windows上)登录到FTP,如下所示:
echo user foo>ftpcmd.txt
echo 1234>>ftpcmd.txt
... CODE HERE ...
echo quit>>ftpcmd.txt
ftp -n -s:ftpcmd.txt foo.com
在Windows上,我将通过删除2天的本地文件
forfiles /d -2 ...
在FTP上将无法使用。那么,如何删除超过2天的文件夹和SUBFOLDERS/SUBFILES?
我知道这个问题:Batch delete files on FTP older than x days
但是我无法为我找到一个好的解决方案。再次,我想要一个批处理文件,该文件针对日期-2天检查文件夹(例如:2016-08-24),并将其及其子目录和子文件删除。
希望这不是一个垃圾邮件问题,因为还有一个问题几乎是相同的。
你好
短剑
最佳答案
ftp.exe
不支持此功能。您必须运行一次ftp.exe
才能获得文件夹列表。然后,您必须编写一些非常精美的批处理脚本来处理列表,选择旧文件夹并生成临时删除脚本。然后您会发现ftp.exe
仍然不支持递归删除。
如果您想在没有任何第三方依赖的情况下进行操作,那么使用PowerShell(以及FtpWebRequest
类)会更加幸运。尽管实现起来仍然非常困难(再次没有对递归删除的 native 支持)。
但是,如果文件夹具有与名称匹配的修改时间戳,则使用WinSCP FTP client很容易。
您可以像这样使用批处理文件(.bat
):
winscp.com /ini=nul /log=ftp.log /command ^
"open ftp://username:password@ftp.example.com/" ^
"rm /remote/path/*<2D" ^
"exit"
引用:
如果您仅需依赖文件名,则比较棘手。
尽管您可以轻松编写脚本来删除2天的文件夹:
您可以使用如下的批处理文件:
winscp.com /ini=nul /log=ftp.log /command ^
"open ftp://username:password@ftp.example.com/" ^
"rm /remote/path/%%TIMESTAMP-2D#yyyy-mm-dd%%" ^
"exit"
如果您使用schedule the script to be run every day,那么您将有效地仅保留最近两天的文件夹。
引用:
%TIMESTAMP%
syntax。WinSCP does not require to be installed。要使批处理正常工作,您需要沿着批处理文件提取WinSCP portable executables package的内容。
(我是WinSCP的作者)
关于windows - 批处理-FTP删除文件夹早于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38959917/