发布了几个解决方案来解释如何将多个参数传递给 ProcessStartInfo 以运行具有多个参数的 DOS 命令。在这种特殊情况下,它们都不起作用。
尝试从 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 解决方案……使用正确的模式……但这是他们永远不会修复的陈词滥调。