gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:13:13 28 4
gpt4 key购买 nike

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

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com