File io WinSCP会话::RemoveFiles-删除子目录中的指定文件
[问题]是否File io WinSCP会话::RemoveFiles-删除子目录中的指定文件,file-io,winscp,winscp-net,File Io,Winscp,Winscp Net,[问题]是否Session::RemoveFiles()删除源目录子目录中的文件?如果没有,如何实现这一能力 (请不要问我为什么将远程目录设置为/C/testTransfer/。该代码仅用于测试目的。) 我有一个使用WinSCP.Net汇编的SFTP程序。程序语言为C++/CLI。它会打开一个工作文件。该文件包含多行FTP指令 我必须处理的一种指令类型是从源目录传输*.txt。源目录可能包含子目录,子目录也可能包含.txt。传输成功后,删除源文件 我使用Session::GetFiles()进行
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”;
会话->获取文件(“/C/testTransfer”,“C:\\temp\\win”,false,transferOption);
现在要删除,我使用session->RemoveFiles(“/C/testTransfer/*.txt”)
。我只在源代码(/C/testTransfer/*.txt
)中看到*.txt
,但在子目录(/C/testTransfer/sub/*.txt
)中没有看到 通常可以删除子目录中的文件。但通配符不是这样,因为WinSCP不会下降到与通配符不匹配的子目录(*.txt
)。还要注意的是,即使您不需要通配符,Session::RemoveFiles
甚至会删除子目录本身,我不确定您是否希望它这样做
尽管您还有其他(更好=更安全)选项:
- 使用的指示在成功传输后删除源文件
- 如果需要以事务方式删除源文件(=仅在所有文件下载成功后),请迭代由
返回的,并为每个文件调用Session::GetFiles
(除非Session::RemoveFiles
不为空) 使用transferventargs::Error
获取要传递到transferventargs::FileName
的文件路径。在将文件名传递到会话::RemoveFiles
之前,请使用转义文件名 有一个类似的完整示例可供选择会话::RemoveFiles
- 要在独立操作中递归删除与通配符匹配的文件(而不是在下载相同的文件之后),请使用。将通配符传递给它的
参数。使用掩码
选项进行递归 为每个返回的文件调用枚举选项.AllDirectories
。在将文件名传递到会话::RemoveFiles
之前,请使用转义文件名会话::RemoveFiles