使用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
答案 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()
使用。