今天因为项目需要,要调用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(); |
每次都是这种纠结的小错误最折磨人了。。。