【发布时间】:2011-06-14 21:40:09
【问题描述】:
我们的网络路径上有一些命令(批处理文件/可执行文件),我们必须调用它们来为该命令窗口初始化我们的“开发环境”。它设置一些环境变量,向 Path 中添加内容等。(然后只有我们输入的任何工作命令才会被识别,我不知道这些初始化命令中的内容)
现在我的问题是,我想使用 C# 程序调用一系列这些“工作命令”,当然,它们只有在完成初始设置后才能工作。我怎样才能做到这一点?目前,我正在从这样的程序中从头开始创建一个批处理文件,例如:
file.Writeline("InitializationStep1.bat")
file.Writeline("InitializeStep2.exe")
file.Writeline("InitializeStep3.exe")
然后是实际的命令
file.Writeline("Dowork -arguments -flags -blah -blah")
file.Writeline("DoMoreWork -arguments -flags -blah -blah")
然后最后关闭文件编写器,并运行这个批处理文件。
现在,如果我直接使用 Process.<strike>Run</strike>Start("cmd.exe","Dowork -arguments"); 执行此操作,它将不会运行。
如何以更简洁的方式实现这一点,这样我只需运行一次初始化命令? (我可以每次都使用所有三个初始化程序运行cmd.exe,但它们需要很长时间,所以我只想执行一次)
【问题讨论】:
-
嗨朋友们,很抱歉造成混乱,我的意思是 Process.Start 只是 Process.Start 而不是 Process.Run。另外,我想我在解释我的问题时不够清楚。我也知道如何使用 Process.Start 和 ProcessStartInfo 执行这些基本命令。我的问题是,一旦我执行它,一切都结束了——虽然我想用那个进程调用“初始化”批处理文件,然后在同一个进程中调用实际的工作命令,因为只有那个具有正确的环境变量和正确的路径集.
-
另外,“它不会运行”我的意思是它不会运行,因为运行命令的先决条件是通过调用那些初始化程序批处理和 exe 文件在命令提示符中设置的。因此,如果我直接使用进程运行,甚至无法识别此命令 Dowork。
-
这是控制流程吗:1.创建批处理文件(不带参数),2.在另一个进程中使用指定参数执行批处理文件中的命令。?如果我不正确,那么确切的控制流程是什么?你上面的cmets不是很精确。