C#调用cmd命令行,执行一个脚本后,并传入命令

今天因为项目需要,要调用winodws命令行。本来有现成的代码可以复用,但是我自己的需求又不大一样。
一开始一直不能run的原因是创建process然后传入cmd命令时,没有以”/c”或者”/k”开头,所以传进去的命令根本不能解读。这个bug还是Leo帮忙de的。。

然后就是我自己一个人的问题了,我因为环境需要,cmd起来后要先执行一个tfs脚本,使tfs命令能够在命令行使用。但是我又要之后传入tf的操作命令,这两个有先后关系,而process每次只能传入一条命令,再传另一条就需要新建process了。。
所以我一直不能做到同时把这两个传进去。
最后,通过网上的启发,以及自己的尝试,发现process的startInfo可以自己配置一个argument,这个argument可以配置成脚本路径,整个思路有点像一个环境变量的配置。
话不多说,贴入代码:

1
2
3
4
5
6
7
8
9
10
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/k \"D:\\softwares\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat\" x86";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = false;
process.Start();
process.StandardInput.WriteLine(cmdLine + " > " + logFileName);
process.StandardInput.Close();

每次都是这种纠结的小错误最折磨人了。。。

此条目发表在 C# 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>