Как запустить cmd.exe, используя C# с несколькими аргументами?

Я использую следующий код для открытия.exe, а затем я хотел бы передать ему еще один аргумент:

ProcessStartInfo StartInfo = new ProcessStartInfo();
StartInfo.FileName = "cmd.exe";
StartInfo.Arguments = @"/k set inetroot=c:\depot&set corextbranch=surfacert_v2_blue_kit&c:\depot\tools\path1st\myenv.cmd";
Process.Start(StartInfo);`

Который открывает окно, как показано ниже.

Теперь мне также нужно передать "sd sync dirs", который дает мне некоторый результат и хотел бы захватить результат в переменную.

Для этого мне нужно передать два параметра в ProcessStartInfo.Arguments. Как я могу добавить этот второй аргумент в коде выше, чтобы позаботиться обо всем в коде C#.

2 ответа

Так как это просто строка, попробуйте это:

string[] MyArguments = { "firstarg", "secondarg"};
Process.Start("cmd.exe", String.Join(" ", MyArguments));

Где firstarg и secondarg - ваши аргументы.

РЕДАКТИРОВАТЬ: К сожалению, забыл сказать вам, если ваш аргумент содержит пробелы, сделайте это (пример содержит 1 аргумент с пробелами-первым arg- и 1 без пробелов-секундным аргументом):

string[] MyArguments = { "\"first arg\"", "secondarg" };

Вот пример передачи нескольких аргументов:

http://msdn.microsoft.com/en-us/library/bfbyhds5.aspx

http://msdn.microsoft.com/en-us/library/53ezey2s.aspx

Если вы передаете строки, вам необходимо учитывать возможность включения кавычек в строку темы или основной текст. Я заручился некоторой помощью по этому вопросу с вопросом Stackru.

Я закончил с чем-то вроде этого:

// DOS command line
C:\>ConsoleApplication1 "Subject Line Text" "Some body text"

// Web form code-behind
// Pass subject and message strings as params to console app    
ProcessStartInfo info = new ProcessStartInfo();

string arguments = String.Format(@"""{0}"" ""{1}""",
     subjectText.Text.Replace(@"""", @""""""),
     messageText.Text.Replace(@"""", @""""""));
     info.FileName = MAILER_FILEPATH;

Process process = Process.Start(info.FileName, arguments);
Process.Start(info);

// Console application
static void Main(string[] args)
{
    if (args.Length >= 2)
    {
        // Do stuff 
    }
}
Другие вопросы по тегам