0

我正在尝试从一个目录下载文件,而所需目录中没有其他目录。

我已经在互联网上搜索了答案,我发现的唯一方法是使用FileMask "|*/"in TransferOptions,它不起作用,并且什么也没有下载。

使用最新版本 (5.7.5)

TransferOptions t = new TransferOptions { FileMask = "|*/" };

session.GetFiles("/", @"C:\bla", false, t);
4

1 回答 1

2

您排除子目录的代码是正确的。

另请参阅 WinSCP 常见问题解答如何以非递归方式传输目录?

TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "|*/";

session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);

它等同于您的代码。


您的代码中还有其他问题。

  1. 您要求 WinSCP 下载根目录,但要排除所有目录。所以什么都没有下载。您需要要求下载根目录中的所有文件:/*.

    引用以下remotePath参数GetFiles的文档:

    远程目录的完整路径,后跟斜杠和通配符以选择要下载的文件或子目录。要下载目录中的所有文件,请使用 mask *

  2. 我假设这C:\bla是一个目标目录。因此,您必须通过附加反斜杠来告诉 WinSCP 将文件下载到目录中:C:\bla\. 否则 WinSCP 将尝试将所有文​​件保存到C:\name bla。失败,如果已经有一个具有该名称的目录。或者一个一个覆盖文件,如果没有的话。

    localPath的参数GetFiles文档:

    将文件下载到的完整路径。下载多个文件时,路径中的文件名应替换为操作掩码或省略(路径以反斜杠结尾)。

  3. 您应该通过检查返回TransferOperationResult或直接调用来检查错误.Check()

所以正确的代码是:

TransferOptions t = new TransferOptions { FileMask = "|*/" };

session.GetFiles("/*", @"C:\bla\", false, t).Check();
于 2015-10-13T18:20:02.290 回答