これが私が最初に素人の言葉でやりたいことです: 私はファイルを取得したいです (そしておそらくいくつかのファイルのみ)。サブディレクトリがある場合は、それらのサブディレクトリにもファイルを取得したいと考えています。Visual C++/CLI を使用してプログラミングしているため、.net アセンブリを使用しています。
WinSCP では、それは を使用することSession.SynchronizeDirectories()
です。最後のパラメーターはTransferOptions
(クラス) で、通常は null に設定されます。基本的に、これはすべてのファイルが転送されることを意味します。オブジェクトを作成してプロパティを設定すると、string FileMask
特定のファイルのみを転送できるはずです。
そこで、WinSCP C#のサンプル プログラムを次のように変更します。
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 プログラムを使用しています。(WinSCP Web サイトの転送設定ダイアログページの図を参照できます。)
ファイルマスクに次のように入力することを除いて、すべてのオプションは明確です。
*.txt
[OK] ボタンをクリックして転送を開始します。プレビュー オプションをオンにしました。そして、サブディレクトリ内のファイルであっても、選択された txt ファイルのみが表示されます。
WinSCP プログラムは動作しますが、API は動作しませんか?
[編集] WinSCP アセンブリのバージョン 5.5.2 を使用しています。