如何运行嵌入批处理文件使用进程.从c#开始

本文关键字:进程 开始 批处理文件 何运行 运行 | 更新日期: 2023-09-27 18:01:40

我添加一个批处理文件。我们说"batch"。cmd"在我的WPF应用程序。我右键单击我的项目并添加现有项目,在项目中添加我的批处理文件。我选择了我的批处理文件,并将构建动作更改为嵌入式资源。在我构建它之后,我看到这个文件添加到project中。

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

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

它也不工作。我怎样才能让我的代码理解这个批处理存在于我的项目中,并在'bin中的某个地方。我不想硬编码,因为Path总是会改变。

如何运行嵌入批处理文件使用进程.从c#开始

您需要在运行时将文件从资源保存到磁盘,然后从该位置调用它(如果它期望从特定文件夹启动,可能需要调整"当前目录")

链接:

  • 如何嵌入和访问资源
  • 路径。GetTempFileName -获取保存文件的位置(完成后不要忘记删除)。
  • ProcessStartInfo。WorkingDirectory

下面的未验证代码:

  var tempFileName = Path.GetTempFileName();
  Assembly.GetExecutingAssembly()
    .GetManifestResourceStream("my.cmd")
    .CopyTo(File.OpenWrite(tempFileName);
  Process.Start(tempFileName);
  File.Delete(tempFileName);

你是说这样吗?

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