我正在尝试从一个目录下载文件,没有其他目录在想要的目录。
我在互联网上搜索了一个答案,我发现的唯一的事情是使用FileMask
"|*/"
在TransferOptions
,这是不工作,下载什么。
使用最新版本(5.7.5)
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/", @"C:bla", false, t);
您排除子目录的代码是正确的。
请参见WinSCP FAQ如何非递归传输目录?
TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "|*/";
session.PutFiles(@"d:toupload*", "/home/user/", false, transferOptions);
它相当于你的代码。
你的代码中有其他问题。
让WinSCP下载根目录,但排除所有目录。所以没有下载任何东西。需要请求下载根目录下的所有文件:
/*
.引用
GetFiles
的remotePath
参数文档:远程目录的全路径,后跟斜杠和通配符,以选择要下载的文件或子目录。要下载目录中的所有文件,请使用掩码
*
。我假设
C:bla
是一个目标目录。所以你必须告诉WinSCP下载文件到这个目录,并加上一个反斜杠:C:bla
。否则,WinSCP将尝试将所有文件保存到名称为bla
的C:
。如果已经有同名的目录,则失败。或者用另一个文件覆盖一个文件,如果没有的话。GetFiles
的localPath
参数文档:下载文件的完整路径。当下载多个文件时,路径中的文件名应替换为操作掩码或省略(路径以反斜杠结尾)。
您应该通过检查返回的
TransferOperationResult
或直接调用.Check()
来检查错误。
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/*", @"C:bla", false, t).Check();