使用C#中的参数和多个命令执行.exe

时间:2017-02-07 14:20:07

标签: c#

我目前正试图"转换"我写给C#的bash脚本。 这个脚本在shell中启动一个程序,然后在这个shell中执行一些命令,看起来类似于:

cd /$MYPATH
./executible -s << EOF
start_source_probe -hardware_name "USB" -device_name "@1: EP3C(10|5)"
write_source_data -instance_index 0 -value "11111"
write_source_data -instance_index 0 -value "10111"
write_source_data -instance_index 0 -value "00111"
exit
EOF

现在我想使用Visual Studio C#做同样的事情。 目前我的尝试看起来像这样:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory = "pathToExe\\";
startInfo.FileName= "executible.exe";
startInfo.Arguments= "-s";
//startInfo.UseShellExecute = false;
//startInfo.RedirectStandardInput = true;
Process proc = new Process();
proc.StartInfo = startInfo;
proc.Start();
//StreamWriter myStreamWriter = proc.StandardInput;
//Console.WriteLine("start_source_probe - hardware_name \"USB\" -device_name \"@1: EP3C(10|5)\"");
//Console.WriteLine("write_source_data -instance_index 0 -value \"11111\"");
proc.WaitForExit();

激活注释(因此在代码中使用#34; //&#34;)我设法打开shell(-s代表shell)但我想知道我是如何在这个shell中执行命令的另外。 我设法用这样的东西执行多个命令(只要我没有启动shell,因为目标输出不同我猜)

const string strCmdText = "/C command1&command2";
Process.Start("CMD.exe", strCmdText);

如果有人能告诉我如何添加参数&#34; -s&#34;我将不胜感激。并在启动过程中执行命令。

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解了您的问题,但您可以在c#代码之外创建一个批处理文件,并从您的c#代码中调用它,如下所示:

def primeCheck(n):
        x = math.floor(math.sqrt(n))
        if (n <= 1):
            return False
        for i in range(2,x+1):
            if n%i == 0:
                return False
        return True

我添加了System.Diagnostics.ProcessStartInfo ProcStartInfo = new System.Diagnostics.ProcessStartInfo("cmd"); ProcStartInfo.RedirectStandardOutput = true; ProcStartInfo.UseShellExecute = false; ProcStartInfo.CreateNoWindow = false; ProcStartInfo.RedirectStandardError = true; System.Diagnostics.Process MyProcess = new System.Diagnostics.Process(); ProcStartInfo.Arguments = "/c start /wait batch.bat "; MyProcess.StartInfo = ProcStartInfo; MyProcess.Start(); MyProcess.WaitForExit(); 所以你的c#代码将等待你的批处理完成,以追求c#代码执行