我有这个简单的代码:
private void MsInfo()
{
Process proc = new Process();
proc.EnableRaisingEvents = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "msinfo32.exe";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.Arguments = "/nfo " + contentDirectory + "\\msinfo.nfo";
proc.StartInfo.WorkingDirectory = contentDirectory;
proc.Start();
proc.WaitForExit();
proc.Close();
}
我想在contentDirectory目录中创建msinfo.nfo。 contentDirectory现在是:
C:\ Users \ bout0_000 \ AppData \ Local \ Diagnostic_Tool_Blue_Screen \ Diagnostic Tool Blue Screen \ SF_28-07-13
我想在参数中使用变量contentDirectory的原因是目录SF_28-07-13每天都在变化。 Tommorow将是SF_29-07-13
如果我愿意参与论证:
proc.StartInfo.Arguments =“/ nfo C:\ TEST \ TEST.NFO”然后将在C:\ TEST中创建文件TEST.NFO
但由于某种原因,当我使用contentDirectory变量时,我无法在任何地方看到msinfo.nfo文件。
相反,我在以下位置看到名为Diagnostic的奇怪文件名:
C:\用户\ bout0_000 \应用程序数据\本地\ Diagnostic_Tool_Blue_Screen 从contentDirectory
返回的两个目录诊断文件是24mb并且没问题,但那不是我想要创建的文件名,而不是在这个位置。
我在参数中尝试了很多方法,并删除/删除了这一行:proc.StartInfo.WorkingDirectory = contentDirectory;
但没有任何效果。
我还能做什么?
答案 0 :(得分:1)
的字符串
C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13\msinfo.nfo
应该是双引号:
"C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13\msinfo.nfo"
使用:
proc.StartInfo.Arguments = "/nfo " + "\"" + contentDirectory + "\\msinfo.nfo" + "\"";
答案 1 :(得分:0)
您根本不需要Arguments属性的完整路径
您已经将WorkingDirectory设置为contentDirectory
,因此,将自动在那里创建文件nfo。
proc.StartInfo.Arguments = "/nfo msinfo.nfo";
proc.StartInfo.WorkingDirectory = contentDirectory;
就像你在命令提示符下键入
C:>\ CD "\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13"
C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13> msinfo32.exe /nfo msinfo.nfo
答案 2 :(得分:0)
由于您正在设置工作目录,因此可以不使用输出文件的路径,而是应该相对于工作目录创建文件:
proc.StartInfo.Arguments = "/nfo msinfo.nfo";
proc.StartInfo.WorkingDirectory = contentDirectory;
但是,通常,当放入空格分隔的字符串时,应引用任何类型的路径,因为它们是单个项目。所以:
proc.StartInfo.Arguments = "/nfo \"msinfo.nfo\"";
proc.StartInfo.WorkingDirectory = contentDirectory;