是否可以在.exe中嵌入bat文件并将其与Process类一起使用?

时间:2011-10-17 19:18:48

标签: c# batch-file embedded-resource

我创建了一个与Process一起使用的批处理文件。我目前只是将应用程序指向本地计算机上的目录。

我不想将我的exe捆绑到这个批处理中,而是希望将它作为一个资源嵌入,以便它包含在exe中。这是否可以使用批处理文件?

ProcessStartInfo startInfo = new ProcessStartInfo()

startInfo.FileName = "c:\test\batchFile.bat";

// set up and execute batch file with various arguments

我已将批处理文件添加到我的解决方案中,并将其作为“资源”添加到我的项目文件中。我不完全确定这是方法,或者如何在我的项目中访问它。

4 个答案:

答案 0 :(得分:2)

至于嵌入批处理文件 - 如果需要,你可以嵌入任何东西......答案是肯定的: - )

关于如何使用嵌入式批处理文件 - 最简单的选择是从资源中读取它(请参阅http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspxhttp://msdn.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcestream.aspx)并将其保存为真实文件 - 然后使用它。 / p>

如果您要嵌入.NET EXE / DLL,您可以使用它而不将其保存为真实文件...使用批处理文件我怀疑您需要将其保存为真实文件。

答案 1 :(得分:2)

这种方法怎么样:

  • 将您的批处理文件存储在您的程序中(作为资源或字符串常量或...)
  • 将内容保存到临时文件
  • 运行此临时批处理文件

答案 2 :(得分:1)

当然:

你应该在

之前使用command.com运行它
System.Diagnostics.Process.Start("cmd", "/c c:\test\batchFile.bat");

答案 3 :(得分:1)

执行此操作的最可靠的方法可能是将.bat写入临时文件,然后运行该临时文件。

根据我的经验,cmd.exe相当简单,可以在不同的环境中表现出不同的方式。如果您希望它的行为就像您从文件系统运行的.bat文件,那么您应该从文件系统运行.bat文件。

您可以尝试(但我不建议)将命令传递给cmd.exe实例,但正如我所说,您可能会遇到不同的行为。