所以我想知道,如何使用C#在CMD中执行多个命令?我的意思是这个...我有一个.exe文件依赖于通过cmd变量(VAMP_PATH)查找文件[是的我正在使用VAMP插件]。所以我在CMD中使用它的方式是:
-set VAMP_PATH:C:\ (press Enter)
-sonic-annotator.exe -d etc...
但是,我在尝试将CMD与C#一起使用时相当新,所以我想知道我应该怎么做?目前我有这段代码:
Process p = new Process();
string args = "\"" + sonicannotatorpath + "\" -t \"" + transpath + "\" \"" + filepath + "\" -w csv --csv-force";
p.StartInfo = new ProcessStartInfo("cmd", args)
{
RedirectStandardOutput = true,
RedirectStandardInput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start();
p.StandardInput.WriteLine(args);
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Console.WriteLine("DONE");
Console.Read();
上面的代码只执行我的CMD命令中的第二行...但由于.exe需要的文件已经在其默认位置,因此没有指定VAMP_PATH命令的问题。
我的问题是我不知道如何添加其他命令。我只需要复制p.StandardInput.WriteLine命令并只输入另一个命令作为参数吗?因为我读到这方面存在一些问题。
此外,我想问一下,因为没有p.StandardInput.WriteLine命令,并且只是使用ProcessStartInfo中的'args'参数,我的命令根本不执行(即使将\ c添加到args)。为什么你认为这是?
谢谢!
答案 0 :(得分:2)
您不能从一个流程对象运行两个命令(实际上是两个流程),而不必先完成第一个流程。
运行第一个,调用p.WaitForExit();
,然后构建并运行第二个。
要启动该过程,您不需要按照当前的方式将Arguments写入命令行。它应该按照你的方式工作。
p.StartInfo.Arguments = args;
p.StartInfo.FileName = "cmd";
可能适合您设置参数。