C# - Process.Start语句问题

时间:2011-06-19 15:54:24

标签: c# .net windows

使用Process.Start在C#中执行事件时遇到问题。以下声明仅输出命令的一半:

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”/ Create / SC DAILY / TN

2 个答案:

答案 0 :(得分:1)

  

出于某种原因,它会削减“/ 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并在此处发布。

答案 1 :(得分:0)

我很惊讶没有抛出异常。格式字符串为@"/Create /SC Daily /TN"。它没有任何占位符(即{0}),因此无法将string.Format()的所有其他参数传入的值放在哪里。

如果您可以发布输出应该是什么样子的示例(很难从您的代码示例中得知),那么我或其他人应该能够为您提供所需的正确string.Format()使用。