是否可以将一个批处理文件嵌入到.exe文件中并使用Process类来运行它?

3

我创建了一个批处理文件,与进程一起使用。目前,我只是让应用程序指向我本地机器上的一个目录。

与其将我的exe与此批处理捆绑在一起,我想将其嵌入到资源中,以便它包含在exe中。这对于批处理文件是否可行?

ProcessStartInfo startInfo = new ProcessStartInfo()

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

// set up and execute batch file with various arguments

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

4个回答

2
关于嵌入批处理文件 - 如果需要的话,几乎可以嵌入任何东西...答案是肯定的 :-)
至于如何使用嵌入的批处理文件 - 最简单的选项是从资源中读取它(参见http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspxhttp://msdn.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcestream.aspx),并将其保存为真实文件 - 然后使用该文件。
如果您嵌入了.NET EXE/DLL,则可以直接使用它而无需将其保存为真实文件...但对于批处理文件,我怀疑您需要将其保存为真实文件。

2

这个方法如何:

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

1

当然:

你应该在之前使用command.com运行它。

System.Diagnostics.Process.Start("cmd", "/c c:\test\batchFile.bat");

1

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

根据我的经验,cmd.exe相当挑剔,并且在不同的上下文中可能会表现出不同的行为。如果您希望它的行为就像您从文件系统运行的.bat文件一样,则应从文件系统运行.bat文件。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接