如何在c#中使用process.start运行嵌入式批处理文件

时间:2013-02-28 16:46:12

标签: c# wpf cmd

我添加了一个批处理文件。让我们在我的WPF应用程序中说“batch.cmd”。我右键单击我的项目并添加现有项目,在项目中添加我的批处理文件。我选择了我的批处理文件并将Build Action更改为Embedded Resource。在我构建之后,我在项目中看到了这个文件。

现在我需要在我的代码中启动我的批处理文件,我尝试Process.Start("batch.cmd"),它不起作用,我确实喜欢:

Process p = new Process();
p.StartInfo.FileName = "batch.cmd";
p.Start();

它也不起作用。我怎样才能让我的代码理解这个批处理存在于我的项目中以及\ bin中的某个位置。我不想对它进行硬编码,因为Path总是会改变。

先谢谢。

2 个答案:

答案 0 :(得分:2)

您需要在运行时将文件从资源保存到磁盘,而不是从该位置调用它(如果需要从特定文件夹开始,可能需要调整“当前目录”)。

链接:

以下未经验证的代码:

  var tempFileName = Path.GetTempFileName();

  Assembly.GetExecutingAssembly()
    .GetManifestResourceStream("my.cmd")
    .CopyTo(File.OpenWrite(tempFileName);

  Process.Start(tempFileName);
  File.Delete(tempFileName);

答案 1 :(得分:0)

你的意思是这样吗?

Process p = new Process();
p.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "\\batch.cmd";
p.Start();