1

複数の引数を使用して DOS コマンドを実行するために ProcessStartInfo に複数の引数を渡す方法を説明するいくつかのソリューションが投稿されています。この特定のケースでは、それらのどれも機能しません。

ac# アプリケーション内から ncftpget を実行しようとしています - 正確な文字列リテラル (@"arg1 arg2 arg3") を使用して複数の引数を実行可能ファイルに渡します。

何が起こっているかというと、引数リストが十分に長いため、切り捨てられますが、(最後に) 期待する場所ではありません。

だから私は次のようなものを渡します:

Program = "ncftpget"
Arguments = @"-f host.cfg D:\ServerBackups\Windows6 2012_01_28_SQLBackupFile.bak"

そして ncftp が取得するのは

-f host.cfg D:\ServerBackups\Windows6 ackupfile.bak

ncftpget を直接呼び出す代わりに、bat ファイルを作成して実行すると、動作します。

奇妙なことに、XP_CMDShell を使用した T/SQL から、これよりもはるかに長い引数を指定して ncftpget を呼び出しています。「パラメータは非常に長くなる可能性があるため、最後ではなく最初から切り捨てる」という環境変数があるかのようです。

引数を引用してみましたが、違いはなく、同じ動作です。

もちろん、Microsoft が実際にまともな ftp ソリューションを持っていた場合...それは正しいモードを使用していました...しかし、それは彼らが決して修正しない古い不満です。

4

0 に答える 0