2015-02-25 3 views
0

У меня есть следующая команда, которая отлично работает в PerlИмея проблемы с запуском экстерном программы аргументы в C#

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

Вы пропустили пробел после '/ log' –

ответ

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); 
+0

спасибо за ответ, я действительно попробовал место после бревна, но это не сработало, но, возможно, был другой вопрос. Я получил его сегодня, так что спасибо и спасибо за другие примеры :-) – Exception