다음은 내가 평신도 용어로 먼저 수행하고자하는 작업입니다. 파일을 가져오고 싶습니다. 하위 디렉토리가있는 경우 해당 하위 디렉토리에서도 파일을 가져 오려고합니다. Visual C++/CLI를 사용하여 프로그램하고 있으므로 .net 어셈블리를 사용하고 있습니다.WinSCP .NET 어셈블리 : 디렉터리 동기화의 FileMask가 작동하지 않습니다.
WinSCP에서는 Session.SynchronizeDirectories()
을 사용합니다. 마지막 매개 변수는 TransferOptions
(클래스)이며 일반적으로 null로 설정됩니다. 기본적으로 모든 파일이 전송된다는 의미입니다. 개체를 만들고 string FileMask
속성을 설정하면 특정 파일 만 전송할 수 있습니다. 나는이 프로그램을 실행하면
using (Session session = new Session())
{
// Will continuously report progress of synchronization
session.FileTransferred += FileTransferred;
// Connect
session.Open(sessionOptions);
// Create a TransferOptions object
TransferOptions tro = new TransferOptions();
tro.FileMask = "*.txt";
tro.TransferMode = TransferMode.Automatic;
// Synchronize files
SynchronizationResult synchronizationResult;
synchronizationResult =
session.SynchronizeDirectories(
SynchronizationMode.Local, @"C:\temp\win", "/C/Users/peter/Documents/WinSCP5.5.1/",
false, false, SynchronizationCriteria.Time, tro);
// Throw on any error
synchronizationResult.Check();
}
, 현재 디렉토리와 하위 디렉토리에서 모든가 전송됩니다
그래서 나는 WinSCP C# example program로 변경!
이러한 옵션을 지정하는 데 문제가 있다고 생각합니다. 나는 WinSCP 프로그램을 사용한다. (WinSCP에 웹 사이트에 Transfer Settings Dialog 페이지 사진 참조 할 수 있습니다.) 나는 파일 마스크에 대해 다음 입력을 제외하고
모든 옵션은 명확하다 : *.txt
나는 전송을 시작하려면 확인 버튼을 클릭합니다. 미리보기 옵션이 있습니다. 그리고 내가 선택한 txt 파일 만 볼 수 있습니다. 서브 디렉토리에도 있습니다.
그래서 WinSCP 프로그램은 작동하지만 API는 작동하지 않습니까?
[편집] WinSCP 어셈블리 5.5.2 버전을 사용하고 있습니다.
코드를 표시하십시오. –
코드가 좋아 보입니다. 'Session.SessionLogPath'를 설정하고 로그를 공유하십시오. 예를 들어 pastebin.com을 사용합니다. –
다음은 로그이며 http://pastebin.com/xR27KwBH에 있습니다. – user3454439