2013-02-28 66 views
0

我添加了一个批处理文件。让我们说我的WPF应用程序中的“batch.cmd”。我右键单击我的项目并添加现有项目,在项目中添加我的批处理文件。我选择了我的批处理文件并将Build Action更改为Embedded Resource。在我建立它后,我看到这个文件添加到项目中。如何使用c中的process.start运行嵌入式批处理文件#

现在我要开始我的批处理文件在我的代码,我试图Process.Start("batch.cmd"),它不工作,我不喜欢:

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

它也不管用。我怎么让我的代码理解这个批处理存在于我的项目和\ bin中的某个地方。我不想对它进行硬编码,因为Path总是会改变的。

谢谢先进。

+0

你说的 “不工作” 是什么意思?不启动进程?,没有得到文件?,批处理失败?让我们了解一下你的问题。 – Morvader 2013-02-28 16:53:46

+0

假设。净4.5,试试这个:'Process.Start(“cmd”,“batch.cmd”);' – 2013-02-28 16:54:13

+0

由不起作用我的意思是应用程序崩溃,它找不到“batch.cmd”它不获取文件 – Chelseajcole 2013-02-28 16:56:50

回答

0

你的意思是这样的?

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

非常感谢! – Chelseajcole 2013-03-04 17:09:02

2

你需要从资源在运行时文件保存到磁盘,比从该位置调用它(可能需要调整“当前目录”,如果它希望从一个特定的文件夹开始)。

链接:

下面

待验证码:

var tempFileName = Path.GetTempFileName(); 

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

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

我该怎么做? – Chelseajcole 2013-02-28 16:59:53

+0

@Chelseajcole我已添加链接 - 第一篇文章包含完整的步骤来处理资源。 – 2013-02-28 17:02:30