我有控制台应用程序,将其命名为 X.exe 。它与两个参数一起工作,比如说'a'和'a.tmp',其中 a 是我的输入文件名和 a.tmp 是输出文件名。我通常在控制台上运行以下应用程序: X a.tmp 但是首先我必须出现在输入文件'a'的位置,否则,如果我尝试给出其绝对路径,应用程序将无法工作。 我已经创建了Windows窗体来运行这些控制台应用程序,但是正如我之前所说,必须在文件位置启动该应用程序。 我尝试使用过程对象,但应用程序无法正常工作。 我创建了两个过程:
Question: can I excute these multiple commands in one go and avoid using IPC?
答案 0 :(得分:0)
您可以使用ProcessStartInfo.WorkingDirectory
。
例如来自MS Docs - ProcessStartInfo Class
当
WorkingDirectory
为UseShellExecute
时,true
属性的行为与UseShellExecute
为false
时的行为不同。当UseShellExecute
为true
时,WorkingDirectory
属性指定可执行文件的位置。如果WorkingDirectory
是一个空字符串,则当前目录将包含可执行文件。注意-当
UseShellExecute
为true
时,启动可执行文件的应用程序的工作目录也是可执行文件的工作目录。当
UseShellExecute
为false
时,WorkingDirectory
属性不用于查找可执行文件。相反,它的值适用于已启动的流程,并且仅在新流程的上下文中具有意义。
例如
public static void Main()
{
Process myProcess = new Process();
try
{
myProcess.StartInfo.UseShellExecute = true;
// You can start any process, HelloWorld is a do-nothing example.
myProcess.StartInfo.FileName = "X.exe"; /
myProcess.WorkingDirectory = "C:\SomeDirectory That contains A and A.tmp"
myProcess.Start();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}