問題タブ [winscp-net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - WinSCP .NET アセンブリ: ディレクトリ同期の FileMask が機能しない
これが私が最初に素人の言葉でやりたいことです: 私はファイルを取得したいです (そしておそらくいくつかのファイルのみ)。サブディレクトリがある場合は、それらのサブディレクトリにもファイルを取得したいと考えています。Visual C++/CLI を使用してプログラミングしているため、.net アセンブリを使用しています。
WinSCP では、それは を使用することSession.SynchronizeDirectories()
です。最後のパラメーターはTransferOptions
(クラス) で、通常は null に設定されます。基本的に、これはすべてのファイルが転送されることを意味します。オブジェクトを作成してプロパティを設定すると、string FileMask
特定のファイルのみを転送できるはずです。
そこで、WinSCP C#のサンプル プログラムを次のように変更します。
プログラムを実行すると、現在のディレクトリとサブディレクトリ内のすべてが転送されます!
これらのオプションを指定するのは間違っているかもしれないと考えています。私は WinSCP プログラムを使用しています。(WinSCP Web サイトの転送設定ダイアログページの図を参照できます。)
ファイルマスクに次のように入力することを除いて、すべてのオプションは明確です。
*.txt
[OK] ボタンをクリックして転送を開始します。プレビュー オプションをオンにしました。そして、サブディレクトリ内のファイルであっても、選択された txt ファイルのみが表示されます。
WinSCP プログラムは動作しますが、API は動作しませんか?
[編集] WinSCP アセンブリのバージョン 5.5.2 を使用しています。
c# - WinSCP .NET アセンブリ: C++/CLI でカスタム イベント ハンドラーを Session.FileTransferred に設定する
申し訳ありませんが、少し具体的な質問があります。はい、これはカスタム イベント ハンドラをイベントに設定することに関連しています。はい、この種の質問はすでに何度も出されているかもしれませんが、ここでは WinSCP の状況に限定する必要があります。
Session.SynchronizeDirectories
メソッドの例を参照してください:
http://winscp.net/eng/docs/library_session_synchronizedirectories
C# の例を C++/CLI に変換していますが、問題が発生しました。
C# では、次のように設定するのは簡単です。
C++/CLI では、次のことを行います。
しかし、私はこのエラーが発生します:
関数 FileTransferred() はデリゲート型 'void (System::Object ^, System::EventArgs ^)' と一致しません。
に変更してみるFileTransferred(System::Object ^sender, EventArgs ^e)
が、 の全身FileTransferred()
が無効になってしまう。
file-io - WinSCP Session::RemoveFiles - サブディレクトリ内の指定されたファイルを削除する
[質問]Session::RemoveFiles()
ソースディレクトリのサブディレクトリにあるファイルは削除されますか? そうでない場合、この機能を実装する方法は?
(リモートディレクトリを としている理由を聞かないでください/C/testTransfer/
。コードはテスト目的のためだけです。)
WinSCP .Net アセンブリを使用する SFTP プログラムがあります。プログラム言語は C++/CLI です。作業ファイルを開きます。このファイルには、多くの行の FTP 命令が含まれています。
私が処理しなければならない命令の 1 つは*.txt
、ソース ディレクトリから転送することです。ソースディレクトリにはサブディレクトリが含ま.txt
れる場合があり、サブディレクトリも同様に含まれる場合があります。転送が成功したら、ソース ファイルを削除します。
Session::GetFiles()
乗り換えに利用しています。.txt
転送元のすべてのファイル ( /C/testTransfer/*.txt
) は、サブ ディレクトリ内のファイル ( ) も含めて、転送先に正しく転送され/C/testTransfer/sub/*.txt
ます。
削除するには、 を使用しますsession->RemoveFiles("/C/testTransfer/*.txt")
。*.txt
ソース ( ) でのみ表示さ/C/testTransfer/*.txt
れ、サブディレクトリ ( /C/testTransfer/sub/*.txt
) では表示されず、削除されます。
c# - このコードがボトルネックになったり、リソースを大量に消費したりする可能性はありますか?
15 分間隔で 4 つのスレッドを実行するコードです。前回実行したとき、最初の 15 分間は高速にコピーされましたが (6 分間で 20 ファイル)、2 番目の 15 分間ははるかに遅くなりました。これは散発的なものであり、ボトルネックがある場合は、リモート サーバーの帯域幅制限にあることを確認したいと考えています。
編集: 私は最後の実行を監視しており、15:00 と :45 はそれぞれ 8 分未満でコピーされています。:15 は終了しておらず、どちらも :30 がなく、どちらも :45 の少なくとも 10 分前に開始されています。
これが私のコードです: