在c#中运行cmd回答是以提示

时间:2018-05-12 13:56:21

标签: c#

我正在从c#运行以下命令。有一个提示将显示我想回答“是”如何使用当前代码执行此操作

如果我将其作为批处理脚本运行,我可以这样做

echo y | pscp.exe -batch -pw password E:\\Certs\\client.conf me@<ip>:/home/user

有效 - 但不确定如何使用下面的

来复制这个
string pscpPath="-batch -pw password E:\\Certs\\client.conf me@<ip>:/home/user";

ExecuteCopyCerts("pscp.exe", pscpPath);

功能:

public Boolean ExecuteCopyCerts(string fileName, string arguments)
{
    txtLiveHubStatus.Text = "";

    try
    {
        System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(fileName, arguments);
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = true;
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        string result = proc.StandardOutput.ReadToEnd();

        return proc.ExitCode == 0;         
    }
}

1 个答案:

答案 0 :(得分:0)

要重申Hesam所说的内容,尽管提示是Y,而不是。这是证书的提示,仅在对每台新Linux机器的第一次调用时出现。今天,我在我们的一个应用程序中使用此代码。

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "pscp";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = false;
psi.Arguments = $"-r -p -pw {passWord} \"{localFileNamePath}\" {userName}@{hostName}:{remotePath}";
psi.UseShellExecute = false;
psi.CreateNoWindow = true;

using (Process process = new Process())
{
    process.StartInfo = psi;
    process.Start();
    process.StandardInput.WriteLine("Y");
    process.WaitForExit();
}