C++ cli WinSCP:使用GetFiles()目录

C++ cli WinSCP:使用GetFiles()目录,c++-cli,winscp,junction,winscp-net,C++ Cli,Winscp,Junction,Winscp Net,[问题]WinSCP可以处理连接目录吗 我正在使用C++/CLI编写一个使用WinSCP.NET程序集(版本5.5.3)的SFTP程序。我的程序读取计划文件。最初,get文件的源路径必须是绝对路径。现在我必须支持相对路径,我遇到了一个问题 以下是尝试获取主目录中的所有文本文件。当然,我也希望获得主目录中所有子目录中的所有文本文件。因此,我使用: transferOptionObject->FileMask = "*.txt"; transferResult = sftpSession-&g

[问题]WinSCP可以处理连接目录吗

我正在使用C++/CLI编写一个使用WinSCP.NET程序集(版本5.5.3)的SFTP程序。我的程序读取计划文件。最初,get文件的源路径必须是绝对路径。现在我必须支持相对路径,我遇到了一个问题

以下是尝试获取主目录中的所有文本文件。当然,我也希望获得主目录中所有子目录中的所有文本文件。因此,我使用:

transferOptionObject->FileMask = "*.txt";
transferResult = sftpSession->GetFiles(".", "C:\\temp\\receive", false, 
                 transferOptionObject);
假设我们使用此帐户terry登录远程计算机,远程主目录为
/C/Users/terry/Documents
。从
session->DebugLog
文件中,我发现WinSCP试图检查主目录中的所有文件和目录

名单如下:

*a.txt
*第一目录
*我的音乐
*我的照片
*我的视频
*其他目录
*其他.txt
WinSCP检查列表中的每个项目。在处理
firstDirectory
之后,它尝试处理
My Music
。但是,由于权限被拒绝,它返回一个无法处理的错误

然后我转到服务器,执行一个
dir
。我发现这3个“我的”目录是[Junction],如下所示:

29-Apr-1409:44。
4月29日09:44。。
2014年1月16日09:48文件
1月16日09:45我的音乐[C:\Users\terry\Music]
1月16日09:45我的照片[C:\Users\terry\Pictures]
1月16日09:45我的视频[C:\Users\terry\Videos]
我检查了这些,发现了这些: ;; ;;


它们相关吗?

因为它是一个远程连接/文件夹,而且SFTP协议对连接一无所知,所以它完全是关于您的SFTP服务器的。这与客户端(WinSCP)无关,因为它甚至不知道它是一个连接。您的SFTP服务器很可能只是将连接显示为一个文件夹。虽然它也可以将其显示为指向文件夹的符号链接(但在这种情况下,WinSCP会自动跳过它)


旁注:远程目标目录的路径应以斜杠结尾。
请参见

1)幸运的是,我的程序的用户说不应该在主目录中使用通配符(例如.*.txt)获取文件。2) 我的程序必须处理相对路径!所以我使用了
3),因为路径必须以斜杠/反斜杠结尾,这两个都是成功的。案例a)获取文件,带通配符的文件,我使用
GetFiles(通配符文件前的目录名不带结尾/,本地目录名不带结尾\\)
。案例b)获取文件,没有通配符的文件,我使用
GetFiles(完整路径和文件名,本地目录名和\\)
。对于SyncDir,我得到了正确的结果,没有结束斜杠/反斜杠。