![](/img/trans.png)
[英]How can i get images from the hard disk resize the images and add them to a list<image> fast?
[英]How can i add some bat files to my project so i will not need them anymore on the hard disk?
例如我有此代码:
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();
我是否从我的项目\\ debug目录中删除文件dxdiag.bat进行了测试,以免出现异常:
proc.Start();
找不到该文件。 一旦文件位于\\ debug目录中,它的工作即可。
我想将dxdiag.bat文件添加到我的项目中,因此,如果我将其发送给其他人,他将能够运行我的程序,并且该进程将从其自身的程序中运行dxdiag.bat,因此我发送该程序的那个不会需要蝙蝠文件在他自己的硬盘上。
只要您没有变量或非单行命令,就可以在bat文件的每一行中运行此函数
internal static void executeCommand(string command, bool waitForExit,
bool hideWindow, bool runAsAdministrator)
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("cmd", "/C " + command);
if (hideWindow)
{
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
}
if (runAsAdministrator)
{
psi.Verb = "runas";
}
if (waitForExit)
{
System.Diagnostics.Process.Start(psi).WaitForExit();
}
else
{
System.Diagnostics.Process.Start(psi);
}
}
这样您还可以将文本保存在代码中
string bat_file = @"@echo off\ncopy c:\users\Desktop\filea.txt c:\users\Desktop\fileb.txt\n...";
否则,我将创建一个临时的bat文件,运行并删除它。
您要做的是按照coshmos的建议将.bat文件嵌入为嵌入式资源。 为此,您需要在解决方案资源管理器中右键单击.bat文件,选择属性,然后在“构建操作”部分下选择“嵌入资源”。 之后,假设您的bat文件位于程序的根目录中,则以下代码应工作:
string batFileName = "dxdiag.bat";
string programName = Assembly.GetExecutingAssembly().GetName().Name;
using (Stream input = Assembly.GetExecutingAssembly().GetManifestResourceStream(programName + "." + batFileName))
{
using (TextReader tr = new StreamReader(input))
{
File.WriteAllText(batFileName, tr.ReadToEnd());
}
}
Process proc = new Process();
proc.EnableRaisingEvents = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = batFileName;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
proc.Close();
此代码的前半部分将bat文件从嵌入式资源中拉出,并将其保存为程序根目录中的实际但临时的bat文件。 之后,它基本上与您的代码相同。
此外,如果添加File.Delete(batFileName);
此代码之后,它将自动删除它创建的临时bat文件。
// create the dxdiag.bat file
using (StreamWriter sw = new StreamWriter("dxdiag.bat"))
{
sw.WriteLine(".........");
// ......
}
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();
//delete the file
File.Delete("dxdiag.bat");
最简单的解决方案是将bat文件添加到Visual Studio中的项目。 为此,请执行以下步骤:
这会将蝙蝠填充复制到构建的输出目录。 如果随后分发程序,则可以发送输出目录。 当然,这不会阻止用户表单删除bat文件。
另一个选择是将批处理文件作为资源嵌入项目中,然后从那里使用它。
右键单击项目,将dxdiag.bat添加到您的项目中,然后选择添加现有项。 然后,将其放入您的项目后,右键单击dxdiag.bat文件并选择属性。 将“复制到输出目录”属性设置为“始终”。
您可以嵌入.bat文件。 需要它们时,请检查这些文件是否存在。 如果否,则将它们从嵌入式资源复制到%appdata%\\ YourAppName,然后使用。
如何读取嵌入式资源: 如何读取嵌入式资源文本文件
Microsoft嵌入式资源的说明: http : //support.microsoft.com/kb/319292
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.