从 SFTP 文件夹复制和删除文件

Copy and delete files from SFTP folder

我必须从 SFTP 位置选择(删除)文件掩码为 FileName_A_*FileName_B_* 的文件,并将它们放在共享驱动器中。

我尝试使用 WinSCP。我用下面的代码创建了一个 HourlyFile.txt 文件并将其放在 C:\Program Files (x86)\WinSCP 下。另一个批处理文件 HourlyFile.batHourlyFile.txt

执行脚本

HourlyFile.txt:

option batch abort
option confirm off
open sftp..........
get -filemask="FileName_A_*" /outbound/test/* \sharedrive
get -filemask="FileName_B_*" /outbound/test/* \sharedrive
del /outbound/test/FileName_A_*
del /outbound/test/FileName_B_* 
exit

HourlyFile.bat:

winscp.com /script=HourlyFile.txt
pause

我尝试使用以下选项删除文件,但收到错误消息 “未知命令”。另外,上面的代码是从 /outbound/test/ 复制子文件夹,它不应该。

尝试过的命令:

del /outbound/test/FileName_A_*
-del /outbound/test/FileName_A_*
delete /outbound/test/FileName_A_*
delete /outbound/test/FileName_A_20190604_090002
delete /outbound/test/FileName_A_20190604_090002.csv

如果要下载和删除文件,最好使用-delete switch of the get command。这样,您可以确保 WinSCP 只删除那些真正成功下载的文件。

get -delete /outbound/test/FileName_A_* \sharedrive\
get -delete /outbound/test/FileName_B_* \sharedrive\

参见 WinSCP 文章 How do I create script that synchronizes files and deletes synchronized files from source afterward?


回答你的字面问题:WinSCP 没有 del 命令。 WinSCP 有 rm command:

rm /outbound/test/FileName_A_*
rm /outbound/test/FileName_B_* 

在某些 Unix 服务器上,通配符命令为:

mrm  /outbound/test/FileName_A_*       

,在活动中

rm  /outbound/test/FileName_A_*       

不起作用,返回错误:

rm: 访问失败:找不到文件 (/outbound/test/FileName_A_*)