2014-11-26 6 views
1

나는 다음과 같은 작업제거하거나</li> <li>다운로드</li> <li>이동 파일 내에서 WinSCP에 .NET 어셈블리

  1. 로 업로드 프로젝트를 전송하는 간단한 SFTP 파일을 개발하기 위해 노력하고있어를 사용하여 SFTP 프로토콜로 선택된 파일을 이동 session.PutFiles()에 업로드하는 동안 원격 서버
  2. 우리가 부동산 캘리포니아를 가진 파일을

제거 transferOptions.FileMask을 사용하여 파일을 필터링합니다.

하지만 내 질문은 내가 이동해야하는 경우 어떻게해야 무엇 session.MoveFile()session.RemoveFiles()

에서 그런 종류의 아무것도 보지 않았다/선택된 파일을 제거?

+0

@MartinPrikryl 한 번에 촬영할 수 없습니다. 선택한 파일에서만 작업을 수행하면됩니다 – user2435880

답변

2

Session.RemoveFilesfile mask을 허용합니다.

그래서 당신은 할 수 있습니다 :

session.RemoveFiles("/home/user/*.txt"); 

그것은 Session.PutFiles와 동일합니다. TransferOptions.FileMask은 실제로 재귀 적으로 파일을 선택하거나 특정 유형의 파일을 제외하려는 경우와 같이 고급 선택을위한 것입니다. TransferOption.FileMask

session.PutFiles(@"c:\toupload\*.txt", "/home/user/"); 

, WinSCP에 재귀 적으로 일치하는 모든 파일을 업로드 할 것입니다. .PutFiles에 대한 인수로 단순한 파일 마스크가있는 반면 재귀 적은 아닙니다. 이 문서화되지 않은 기능 비록


Session.MoveFile 사실도 첫 번째 인수에 을 파일 마스크를 지원합니다.

올바른 방법은 원격 디렉토리를 나열하고 원하는 파일을 선택한 다음 각각에 대해 Session.MoveFile으로 전화하는 것입니다.

Listing files matching wildcard을 참조하십시오. PowerShell 예제이지만 C#에 쉽게 매핑 할 수 있습니다.

+0

감사합니다 마틴 ... 시도해보고 알려 드리겠습니다 – user2435880

+0

도움을 주셔서 감사합니다. @MartinPrikryl 파일을 삭제하는 것이 완벽하게 정상적으로 작동합니다. 그러나 이동 파일 예외가 throw됩니다 session.MoveFile ("/ upload/Folder1", "/ upload/Folder1/Archive"); – user2435880

+0

그 명령은 의미가 없습니다. 폴더를 자체 하위 폴더로 이동하는 것은 가능하지 않습니다. 나는 당신이 실제로 그 폴더 (그 자체가 아닌)에서 그 하위 폴더로 파일을 옮기고 싶다고 가정한다. 이것은'session.MoveFile ("/ upload/Folder1/*", "/ upload/Folder1/Archive /")'(후행 슬래시에주의)입니다. 그것은 "보관함"폴더도 자체로 이동하려고 시도하지만 다시 실패합니다. 확장자를 사용하여 파일을 선택하면 폴더와 구별 할 수 있습니다. 그렇지 않다면, 내 대답에 제안 된 솔루션을 사용해야합니다. –