C# WinSCP.NET程序集-GetFiles根目录非递归(无子目录)

C# WinSCP.NET程序集-GetFiles根目录非递归(无子目录),c#,winscp,winscp-net,non-recursive,C#,Winscp,Winscp Net,Non Recursive,我正在尝试从一个目录下载文件,而不是通缉目录中的其他目录 我在互联网上搜索了答案,唯一找到的是在传输选项中使用文件掩码“|*/”,它不起作用,什么也不下载 使用最新版本(5.7.5) 排除子目录的代码是正确的 另请参见WinSCP常见问题解答 它相当于您的代码 代码中还有其他问题 您要求WinSCP下载根目录,但不排除所有目录。所以没有下载任何东西。您需要请求下载根目录中的所有文件:/* 引用以下文件: 远程目录的完整路径后跟斜杠和,以选择要下载的文件或子目录。要下载目录中的所有文件,请使用m

我正在尝试从一个目录下载文件,而不是通缉目录中的其他目录

我在互联网上搜索了答案,唯一找到的是在
传输选项中使用
文件掩码
“|*/”
,它不起作用,什么也不下载

使用最新版本(5.7.5)


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

另请参见WinSCP常见问题解答

它相当于您的代码


代码中还有其他问题

  • 您要求WinSCP下载根目录,但不排除所有目录。所以没有下载任何东西。您需要请求下载根目录中的所有文件:
    /*

    引用以下文件:

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

  • 我假设
    C:\bla
    是一个目标目录。因此,您必须告诉WinSCP通过附加反斜杠将文件下载到目录中:
    C:\bla\
    。否则,WinSCP将尝试将所有文件保存到名为
    bla
    C:\
    。如果已存在同名目录,则失败。或者用另一个文件覆盖文件,如果没有

    以下文件:

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

  • 您应该通过检查返回的或直接调用
    .check()
    来检查错误

  • 因此正确的代码是:

    TransferOptions t = new TransferOptions { FileMask = "|*/" };
    
    session.GetFiles("/*", @"C:\bla\", false, t).Check();
    

    查看
    SearchOption
    s如何在winscp中使用此选项?
    TransferOptions transferOptions = new TransferOptions();
    transferOptions.FileMask = "|*/";
    
    session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
    
    TransferOptions t = new TransferOptions { FileMask = "|*/" };
    
    session.GetFiles("/*", @"C:\bla\", false, t).Check();