1

我正在考虑编写一个 GUI,它将充当测试套件的包装器,该套件目前是 .bat 和 .exe 的选择

我将如何实现这样的包装器?我已经使用 ProcessStartInfo 从 c# 中查看(并使用)运行 .bat 和 .exe(请参阅C# ProcessStartInfo 读取 Output "live" (Concurrent))。

我将如何实施呢?一些 .exe 需要设置环境变量,是否可以在 C# 应用程序中为它启动的任何 .exe 设置这些变量?

是否可以用来自 C# 的实际调用替换 .bat 来运行每个命令?

以前有没有人写过类似的包装器?

4

2 回答 2

3

如果您可以从命令行触发所需的 .exe 和 .bat 文件,那么您可以使用

System.Diagnostics.Process.Start("myProg.exe", "cmdParam");

使用参数 cmdParam 启动 myProg.exe。从那里我只需为您要运行的每个程序(或一组程序)打开一个带有按钮的 WinForms 应用程序,然后在单击处理程序代码中启动它们。当然,您需要知道文件的路径,但您总是可以在尝试使用它们之前添加一些逻辑来检查它们是否存在。

如果你想变得聪明,那么你可以挂钩标准文件打开对话框来定位它们,然后添加一个文本框来输入该命令行参数字符串,这样你就可以拥有:

public class MyBatchFile
{
    public string Name { get; set; }
    public string FilePath { get; protected set; }
    public string DefaultParams { get; protected set; }

    public MyBatchFile(string filePath, string defaultParams)
    {
        FilePath = filePath;
        DefaultParams = defaultParams;
    }

    public string Run(string params = null)
    {
        System.Diagnostics.Process.Start(FilePath, (params ?? DefaultParams));
    }
}

你可以让你的程序保留一个内部List<Program>来存储这些。如果你想变得非常聪明,那么你可以添加一个方法来将该列表序列化到一个文件中,然后添加一些代码来读回该文件并验证它描述的文件是否仍然存在,现在你有一个整洁的小程序启动 GUI,可以记住您的批处理文件和命令行工具的位置,并提供一个很好的简单界面来启动它们。您甚至可以添加一种将它们分组的方法,这样您就可以一键运行多个操作。

如果不出意外,这个答案已经解释了为什么我总是有一个编程项目在进行中。

于 2013-01-30T16:07:50.603 回答
1

一些 .exe 需要设置环境变量,是否可以在 C# 应用程序中为它启动的任何 .exe 设置这些变量?

使用ProcessStartInfo.EnvironmentVariables属性

是否可以用来自 C# 的实际调用替换 .bat 来运行每个命令?

对于任意批处理文件编号。这是因为批处理文件可以具有控制流语句(loopsif)。当然,对于给定的批处理文件,您可以手动转换它。

于 2013-01-30T17:57:18.120 回答