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

时间:2019-06-11 18:02:31

标签: sftp winscp

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

我尝试使用WinSCP。我用以下代码创建了一个HourlyFile.txt文件,并将其放在C:\Program Files (x86)\WinSCP下。另一个批处理文件HourlyFile.bat,用于执行HourlyFile.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

2 个答案:

答案 0 :(得分:0)

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

[[1, 2], [2, 3], [0, 3]]

要回答您的字面问题:WinSCP没有int Jnr = 1000; int Mnr = 35; tuple t { string name; } t I[i in 1..Mnr]=<"A">; string A[i in 1..Jnr][j in 1..Mnr]=((i+j)%2==0)?"A":"B"; int counter[1..Jnr][1..Mnr]; execute { var i=1; var j=1; var k=1; while (j <= Jnr) { while (i <= Mnr) { while (k <= Mnr) { if (A[j][k] == "") { break; } else if (A[j][k] == I[i].name) { counter[j][i] = counter[j][i] + 1; } k = k + 1; } k = 1; i = i + 1; } i = 1; j = j + 1; } j = 1; } int counter2[i in 1..Jnr][j in 1..Mnr]=sum(k in 1..Mnr) (I[k].name==A[i][k]); execute { counter2; } assert forall(i in 1..Jnr,j in 1..Mnr) counter[i][j]==counter2[i][j]; 命令。 WinSCP具有rm command

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

答案 1 :(得分:0)

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

mrm  /outbound/test/FileName_A_*       

,在事件中

rm  /outbound/test/FileName_A_*       

不起作用,返回错误:

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