我必须从SFTP位置选择(删除)文件掩码为FileName_A_*
和FileName_B_*
的文件,并将它们放置在共享驱动器中。
我尝试使用WinSCP。我用以下代码创建了一个HourlyFile.txt
文件,并将其放在C:\Program Files (x86)\WinSCP
下。另一个批处理文件HourlyFile.bat
,用于执行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
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
答案 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_*)