C#命令行执行命令属于另一个可执行文件

时间:2018-08-07 17:13:22

标签: c# command-line sftp

下面是我试图用参数运行一个命令的代码。 (调用Tectia SFTP客户端配置文件并上传文件)

        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.Arguments = $"/c sftpg3 {profile}";
        cmd.StartInfo.RedirectStandardInput = true;
        cmd.StartInfo.RedirectStandardOutput = true;
        cmd.StartInfo.CreateNoWindow = true;
        cmd.StartInfo.UseShellExecute = false;
        cmd.Start();

        using (StreamWriter sw = cmd.StandardInput){
                    if (sw.BaseStream.CanWrite)
                        sw.WriteLine($"/c sput {filename} {output}");
         }

该过程开始后,它登录到SFTP中并被卡住。它不会输入下一个命令,因为它被视为另一个程序。

想问一下登录后如何执行下一个命令?我尝试了通过&&串联调用CMD,但也无法正常工作。我们只能在客户端请求时通过命令行使用SFTP。

1 个答案:

答案 0 :(得分:2)

  • 使用sftpg3选项启动-B -,以从标准输入中读取内容。

  • 使用sftpg3选项启动-B <filename>以从批处理中读取 命令文件。

有关命令行参数的更多详细信息,请参见path_hierarchy tokenizer

而且,我不认为您想第二次写/c/c只是传递给cmd.exe的东西。关于这一点,为什么要调用cmd.exe而不是直接调用二进制文件?