下面是我试图用参数运行一个命令的代码。 (调用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。
答案 0 :(得分:2)
使用sftpg3
选项启动-B -
,以从标准输入中读取内容。
使用sftpg3
选项启动-B <filename>
以从批处理中读取
命令文件。
有关命令行参数的更多详细信息,请参见path_hierarchy
tokenizer
而且,我不认为您想第二次写/c
。 /c
只是传递给cmd.exe
的东西。关于这一点,为什么要调用cmd.exe
而不是直接调用二进制文件?