运行 C# 中的外部程序参数有问题
Having an issue with running an external programs arguments in C#
我有以下在 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
使用 string.Format
可能有助于揭示问题所在(您在 \log
之后缺少 space)。我认为这可能有帮助:
startInfo.Arguments =
string.Format("{0} /all /archive /loguser /prompt /autoexit /log {1}", drive, log);
有时确保日志路径也被引号括起来是个好主意,如果您从 .config 或您无法控制的其他地方读取它,因为它可能有 spaces 在里面。这可能也适用于 drive
?
要处理那个案子:
startInfo.Arguments =
string.Format("\"{0}\" /all /archive /loguser /prompt /autoexit /log \"{1}\"",
drive, log);
我有以下在 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
使用 string.Format
可能有助于揭示问题所在(您在 \log
之后缺少 space)。我认为这可能有帮助:
startInfo.Arguments =
string.Format("{0} /all /archive /loguser /prompt /autoexit /log {1}", drive, log);
有时确保日志路径也被引号括起来是个好主意,如果您从 .config 或您无法控制的其他地方读取它,因为它可能有 spaces 在里面。这可能也适用于 drive
?
要处理那个案子:
startInfo.Arguments =
string.Format("\"{0}\" /all /archive /loguser /prompt /autoexit /log \"{1}\"",
drive, log);