windows - 批处理-FTP删除文件夹早于

标签 windows batch-file ftp

我家有两个摄像头,几乎每天都在创建图像。他们将它们保存到我的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"

引用:
  • Guide to scripting with WinSCP;
  • File masks with time constraints


  • 如果您仅需依赖文件名,则比较棘手。

    尽管您可以轻松编写脚本来删除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/

    相关文章:

    windows - 使用任务计划程序每 4 小时运行一次脚本

    windows - 我的应用程序如何找到 Windows 消息的发件人?

    file - 将文件夹中的每个文件移动到以该文件命名的自己的文件夹中的批处理脚本?

    ios - 通过AFNetworking将多个文件上传到FTP

    python - 我应该抛出哪个 Python 异常?

    c - 如何从程序返回进度值

    linux - centos服务器上的定时任务

    scripting - 如何在不复制扩展属性信息的情况下运行 robocopy?

    ruby FTP被动模式错误

    android - 如何从 DDMS 和 Ftp 服务器恢复数据?