在 WinSCP 中同步文件掩码 - 合并文件过滤器与子目录排除

Synchronize file mask in WinSCP - merge file filter with subdirectories exclusion

我正在编写一个脚本来同步两个文件夹。我从本地文件夹中选取图像并在 FTP.

上同步它们

我必须应用三个过滤器:

  1. 仅图像文件(有效:*.jpg; *.png...

  2. 仅较新的文件(有效:*.png>=%2019-04-10#yyyy-mm-dd%

  3. 我不想复制文件夹(不起作用)

我使用的代码有效,但它也复制了子文件夹。在互联网上他们说我必须使用 "|*/" 来跳过子文件夹。但是如果我在我的文件掩码中使用它,它会复制所有内容,而忽略我的其他过滤器。

这是我使用的代码:

这里我使用密码

连接到SFTP服务器
open sftp://USERNAME:PASSWORD@myFTP.com -hostkey="ssh-rsa 4096 JvxxxxxxxxxxxxxxxxxxVx8/5VSw="
option batch
option transfer binary

这里我同步:

synchronize remote -filemask="*.png>=%2019-04-10#yyyy-mm-dd%; *.jpeg>=%2019-04-10#yyyy-mm-dd%; *.jpg>=%2019-04-10#yyyy-mm-dd%;" H:\MyImageFolder /test/DestinationFolder/ -nopreservetime 

我试过这个:

synchronize remote -filemask="*.png>=%2019-04-10#yyyy-mm-dd%; *.jpeg>=%2019-04-10#yyyy-mm-dd%; *.jpg>=%2019-04-10#yyyy-mm-dd%; "|*/" " H:\MyImageFolder /test/DestinationFolder/ -nopreservetime 

但是它不起作用,或者它告诉我 filemask 的参数数量错误。

如何使用我的图像过滤器(基于扩展名和日期)并从同步中排除子文件夹?

我发现了其他溢出问题,但没有一个符合我的具体问题。

  1. %2019-04-10#yyyy-mm-dd%不对,应该是2019-04-10.
  2. 您的文件掩码周围已经有 double-quotes,因此请从 "|*/" 中删除它们。

请参阅 WinSCP file masks 的文档。


这个应该做,你想要什么:

-filemask="*.png>=2019-04-10; *.jpeg>=2019-04-10; *.jpg>=2019-04-10 | */"