是否可以在.exe中嵌入bat文件并与Process类一起使用
本文关键字:Process 一起 文件 bat exe 是否 | 更新日期: 2023-09-27 18:11:35
我创建了一个与进程一起使用的批处理文件。我目前只让应用程序指向我本地机器上的一个目录。
而不是捆绑我的exe与此批处理,我想只是嵌入它作为一个资源,使它将包含在exe。这是可能的批处理文件吗?
ProcessStartInfo startInfo = new ProcessStartInfo()
startInfo.FileName = "c:'test'batchFile.bat";
// set up and execute batch file with various arguments
我已经将批处理文件添加到我的解决方案中,并将其作为"资源"添加到我的项目文件中。我不完全确定这是要走的路,或者如何在我的项目中访问它。
至于嵌入批处理文件-你可以嵌入几乎任何东西,如果需要的话…答案是肯定的:-)
至于如何使用嵌入的批处理文件—最简单的选择是从资源中读取它(参见http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspx和http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcestream.aspx)并将其保存为实际文件—然后使用它。
如果你想嵌入一个。net EXE/DLL,你可以使用它,而不需要将其保存为一个真正的文件…对于批处理文件,我怀疑您需要将其保存为一个真正的文件。
这个方法如何:
- 将批处理文件存储在程序中(作为资源或字符串常量或…)
- 将内容保存到临时文件
- 运行这个临时批处理文件
当然:
你应该运行它,但是在
之前要有command.com
System.Diagnostics.Process.Start("cmd", "/c c:'test'batchFile.bat");
可能最可靠的方法是将.bat写入临时文件,然后运行该临时文件。
根据我的经验,cmd.exe相当挑剔,在不同的上下文中可以以不同的方式表现。如果您希望它的行为就像您从文件系统中运行的。bat文件一样,那么您应该从文件系统中运行。bat文件。
您可以尝试(但我不建议)将命令管道传输到cmd.exe的实例,但正如我所说,您可能会得到不同的行为。