在C#中运行外部程序参数时遇到问题

时间:2015-02-25 04:29:45

标签: c# arguments argument-passing

我有以下命令在Perl中正常工作

my $bugcmd = `"C:\\Program Files (x86)\\McAfee\\VirusScan Enterprise\\scan32.exe" 
    $source /all /archive /loguser /prompt /log $path$itemID.txt /autoexit`;

然而在C#中,我不能为我的生活在C#中创建一个日志文件该死的东西它扫描它只是没有创建日志,任何帮助将不胜感激。

string log = txtSource.Text + itemID + ".txt";

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Program Files (x86)\McAfee\VirusScan Enterprise\scan32.exe";
startInfo.Arguments = drive + " /all /archive /loguser /prompt /autoexit /log" + log;
Process.Start(startInfo);

调试器中的路径和itemID看起来很好。 C:\ TEMP \ itemID.txt

1 个答案:

答案 0 :(得分:1)

使用string.Format可能有助于揭示问题所在(您在\log之后错过了一个空格)。我认为这可能有所帮助:

startInfo.Arguments = 
    string.Format("{0} /all /archive /loguser /prompt /autoexit /log {1}", drive, log);

如果您从.config或其他您无法控制的地方读取日志路径,确保日志路径也被引号包围,这是个好主意。因为它可能有空格。这可能也适用于drive

处理这种情况:

startInfo.Arguments = 
    string.Format("\"{0}\" /all /archive /loguser /prompt /autoexit /log \"{1}\"", 
        drive, log);