2

[问题] 是否Session::RemoveFiles()删除源目录子目录中的文件?如果没有,如何实现这个能力?

(请不要问我为什么将远程目录设置为/C/testTransfer/. 代码仅用于测试目的。)

我有一个使用 WinSCP .Net 程序集的 SFTP 程序。程序语言是 C++/CLI。它打开一个工作文件。该文件包含多行 FTP 指令。

我必须处理的一种指令是*.txt从源目录传输。源目录可能包含子目录,子目录也可能包含.txt。传输成功后,删除源文件。

Session::GetFiles()用于转移。它正确地将源中的所有.txt文件 ( /C/testTransfer/*.txt),甚至是子目录 ( /C/testTransfer/sub/*.txt) 中的文件传输到目标。

transferOptions->FileMask = "*.txt";
session->GetFiles("/C/testTransfer", "C:\\temp\\win", false, transferOption);

现在要删除,我使用session->RemoveFiles("/C/testTransfer/*.txt"). 我只看到*.txt在源(/C/testTransfer/*.txt)中,而不是在子目录(/C/testTransfer/sub/*.txt)中,都被删除了。

4

1 回答 1

2

通常Session::RemoveFiles可以删除子目录中的文件。但通配符不是这种方式,因为 WinSCP 不会下降到与通配符 ( ) 不匹配的子目录*.txt。另请注意,即使您不需要通配符,Session::RemoveFiles也会删除子目录本身,我不确定您是否想要它。

尽管您还有其他(更好=更安全)的选择:

于 2014-05-07T06:27:20.187 回答