使用 WinSCP 脚本复制具有名称标准的文件

Copy a file with a name criteria using WinSCP scripting

我有一个 Test 文件夹,其中包含具有以下两种文件名的多个文件:

Cycle2605.zip
Cycle2605_P.zip
Cycle2705.zip
Cycle2705_P.zip

我设法做的是,通过 WinSCP SFTP 将所有文件从文件夹移动到其他服务器,如下面的代码所示。

open sftp://user:password@hostname/ -hostkey="ecdsa-sha2*******"
put D:\Users\AALADELA\Desktop\Test /cygdrive/d/VB_SHARE/astroQA/AFP/in
exit

但是如何将文件名中不包含 _P 的文件移动到目标而不是移动所有文件?

open sftp://user:password@hostname/ -hostkey="ecdsa-sha2*******"
if <filename not contain _p> echo put D:\Users\AALADELA\Desktop\Test /cygdrive/d/VB_SHARE/astroQA/AFP/in
exit

您可以排除文件 matching certain pattern with -filemask switch:

put -filemask=|*_P.zip D:\Users\AALADELA\Desktop\Test /cygdrive/d/VB_SHARE/astroQA/AFP/in

或者如果您的文件名约定允许,您也可以只选择您想要的文件,例如:

put -filemask=Cycle????.zip D:\Users\AALADELA\Desktop\Test /cygdrive/d/VB_SHARE/astroQA/AFP/in

在这种情况下,直接在 source path 中使用 Windows 通配符更容易:

put D:\Users\AALADELA\Desktop\Test\Cycle????.zip /cygdrive/d/VB_SHARE/astroQA/AFP/in/