【问题标题】:Having an issue with running an external programs arguments in C#在 C# 中运行外部程序参数时遇到问题
【发布时间】:2015-04-26 23:33:11
【问题描述】:

我有以下在 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

【问题讨论】:

  • /log 后面缺少一个空格

标签: c# arguments argument-passing


【解决方案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);

【讨论】:

  • 感谢您的回复,我实际上在日志后尝试了一个空格,但它也没有工作,但也许我还有另一个问题。我今天让它工作了,所以再次感谢并感谢其他示例:-)
猜你喜欢
  • 2017-04-07
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多