C # - проблема с оператором Process.Start - PullRequest
0 голосов
/ 19 июня 2011

У меня проблемы при выполнении события в C # с использованием Process.Start. Оператор ниже выводит только половину команды:

private void AddTask_Click(object sender, EventArgs e)
{
    Process.Start("schtasks.exe", string.Format(@"/Create /SC DAILY /TN", "\"" + textBox1.Text + "\"", string.Format(@"/TR C:\Program Files\test\scanner.exe C:\", "\"" + textBox1.Text + "\"")));
}

По какой-то причине он сокращается в "/ TN", например,

"C: \ Windows \ System32 \ schtasks.exe" / Создать / SC DAILY / TN

Ответы [ 2 ]

1 голос
/ 19 июня 2011

По какой-то причине это сокращает в "/ TN"

Правильно.В

 string.Format(@"/Create /SC DAILY /TN", "other strings");

Первая строка рассматривается как строка формата, остальные - аргументы, в этом случае не используемые.
Без {0} заполнителей, которые вам не нужны String.Format(), просто используйте

 Process.Start("schtasks.exe", @"/Create /SC DAILY /TN" + "\"" + ...

Это не исключает возможности синтаксической ошибки в аргументах командной строки.

Измените его на:

string args =  @"/Create /SC DAILY /TN" + "\"" + ...
Process.Start("schtasks.exe", args);

А затем вы можете проверить args в отладчике и, возможно, опубликовать здесь.

0 голосов
/ 19 июня 2011

Я удивлен, исключение не выбрасывают.Вы форматируете строку @"/Create /SC Daily /TN".У него нет заполнителей (например, {0}), поэтому у него нет места для ввода значений, переданных для всех других параметров string.Format().

Если вы можете опубликовать пример того, чтовывод должен выглядеть примерно так (трудно понять из вашего примера кода), тогда либо я, либо кто-то еще сможет дать вам правильный string.Format(), который вам нужно использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...