例如,我有这样的代码:
Process proc = new Process();
proc.EnableRaisingEvents = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "dxdiag.bat";
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
proc.Close();
字符串
我做了一个测试,如果我删除文件dxdiag.bat从我的项目\调试目录im得到一个异常行:
proc.Start();
型
文件未找到。一旦文件位于\debug目录中,它就可以工作了。
我想添加dxdiag.bat文件到我的项目,所以如果我发送给别人我的程序,他将能够运行我的程序和进程将运行dxdiag.bat从程序本身,所以我发送的程序不会需要 bat 文件在他自己的硬盘上。
7条答案
按热度按时间ulmd4ohb1#
只要没有变量或非单行命令,就可以对bat文件的每一行运行此函数
字符串
所以你也可以保存代码中的文本
型
否则我会创建一个临时的 bat 文件,运行它并删除它。
jvidinwx2#
最简单的解决方案是将bat文件添加到Visual Studio中的项目中。要执行此操作,请执行以下步骤:
1.将bat文件复制到保存项目的目录中。
1.将文件添加到项目中。
1.将属性“生成操作”设置为“内容”。
1.将属性“复制到输出目录”设置为“始终复制”。
这将把 bat 填充复制到构建的输出目录。如果你分发你的程序,你可以发送输出目录。这当然不会阻止用户删除bat文件。
另一种选择是将批处理文件作为资源嵌入到项目中,并从那里使用它。
iklwldmw3#
通过右键单击项目并选择添加现有项,将dxdiag.bat添加到项目中。然后,一旦它在您的项目中,右键单击dxdiag.bat文件并选择properties。将“复制到输出目录”属性设置为“始终”。
x6yk4ghg4#
您要做的是按照coshmos的建议将.bat文件作为嵌入资源嵌入。为此,您需要在解决方案资源管理器中右键单击.bat文件,选择属性,然后在“构建操作”部分下选择“嵌入式资源”。之后,假设你的bat文件在程序的根目录下,下面的代码应该可以工作:
字符串
这段代码的前半部分将bat文件从嵌入式资源中取出,并将其保存为程序根目录中的实际但临时的bat文件。在此之后,它基本上与您的代码相同。
此外,如果在此代码后添加
File.Delete(batFileName);
,它将自动删除它创建的临时bat文件。g52tjvyc5#
字符串
zd287kbt6#
您可以嵌入.bat文件。当你需要它们时,你检查这些文件是否存在。如果没有,请将它们从嵌入资源复制到%appdata%\YourAppName,然后使用。
如何读取嵌入式资源:How to read embedded resource text file
来自Microsoft的嵌入式资源的说明:http://support.microsoft.com/kb/319292的
t5fffqht7#
属性,并设置以下内容
将属性“生成操作”设置为“内容”。将属性“复制到输出目录”设置为“始终复制”。