是否可以递归删除 WinSCP 批处理文件中超过 X 天的文件?[关闭]

Is it possible to recursively delete files with more than X days in WinSCP batch file? [closed]

提问人:João Garcia 提问时间:11/15/2023 最后编辑:Martin PrikrylJoão Garcia 更新时间:11/17/2023 访问量:34

问:


我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便用事实和引文来回答。

8天前关闭。

社群在 7 天前审查了是否重新打开这个问题,并关闭了这个问题:

原始关闭原因未解决

我有一个脚本可以将文件从一台服务器传输到另一台服务器。 有了这个,我需要有一部分脚本来删除目标文件夹中超过 X 天的文件。

我查看了 WinSCP 文档、论坛和所有其他信息,但我没有发现任何东西,任何人都可以帮助我。

我尝试过循环进入文件夹并在超过 X 天的时间内删除每个文件,但没有任何效果。

批处理文件 sftp winscp

评论


答:

0赞 Martin Prikryl 11/15/2023 #1

不可以,使用简单的 WinSCP 脚本是不可能的。

但是使用 WinSCP .NET 程序集和 PowerShell 脚本很容易。

在我对这个问题的回答的最后,你会发现一个非递归删除的完整代码:
使用PowerShell或批处理文件从FTP服务器中删除超过X天的文件

若要以递归方式查找旧文件,请使用 Session.EnumerateRemoteFiles 对其进行修改,如下所示:

$oldFiles  =
    $session.EnumerateRemoteFiles(
        "/remote/path", $Null, [WinSCP.EnumerationOptions]::AllDirectories) |
    Where-Object { -Not $_.IsDirectory } | 
    Where-Object { $_.LastWriteTime -lt $limit }