C# 控制台应用程序参数到任务计划程序参数(已关闭)

C# 控制台应用程序参数到任务计划程序参数(已关闭),c#,arguments,scheduled-tasks,C#,Arguments,Scheduled Tasks,我在这个问题上做了很多研究,我所发现的都是一些误导性的网站,关于我没有寻找的信息。所以我希望在座的任何人都能给我一个可靠的解释 基本上,我有一个程序,我想在任务调度器中使用它。但无论我在框中给出了什么参数来放置它们,它总是说索引位于数组边界之外 我知道参数链接到args?有人能告诉我我的代码有什么问题吗 public static void Main(string[] args) { string paramList = string.Join("", args); string[]

我在这个问题上做了很多研究,我所发现的都是一些误导性的网站,关于我没有寻找的信息。所以我希望在座的任何人都能给我一个可靠的解释

基本上,我有一个程序,我想在任务调度器中使用它。但无论我在框中给出了什么参数来放置它们,它总是说索引位于数组边界之外

我知道参数链接到args?有人能告诉我我的代码有什么问题吗

public static void Main(string[] args)
{
   string paramList = string.Join("", args);
   string[] parameter = paramList.Split(',');

   string ScanPath = parameter[0]; //Which directory to scan
   string MailToAddress = parameter[1]; //Which e-mail to send the log to
   string ScanHours = parameter[2]; //How many hours to scan
}
我在codeproject的某个地方找到了这个。我假设第一个参数链接到第一个参数,等等

在任务计划程序中,我基本上浏览到已发布的可执行文件:

当然,运行程序时,
路径
邮件
部分要长得多,但这只是一个例子

我需要删除逗号吗?和/或在每个参数前面添加
-
?还是完全是另一回事


提前谢谢

通常命令行参数由单个空格字符分隔,而不是逗号分隔。此外,如果任何参数包含空格,则需要将该参数用双引号括起来:

"C:\My Documents\xxx" x@y.z 10

我不知道任务调度器是如何提供参数的,但您当然可以在使用参数之前记录参数,以便准确地查看传递给应用程序的内容。

尽管我认为您已经知道这一点,但请确保: 您需要用空格分隔参数。此外,如果参数包含空格(例如路径),请将其置于双引号中

为什么不编写一个简单的测试应用程序,将完整的paramsarray转储到文本文件中呢。
那你应该知道如何正确翻译。

哈哈,对不起,我不知道。我只是个初学者,不要评判我;)我可以问你关于在哪里放置双引号的想法吗?text.exe“C:\Programfiles x86\which”nextparamnoblanks“param with blanks!”这没有错,但是你通常会事先检查
args.Length
,而不是假设用户提供了正确数量的参数。我希望日志记录能准确地显示发生了什么。根据我的程序,实际上阵列有问题吗?因为错误从
[1]
开始,当我尝试用
[0]
切换
[1]
时,错误保持在
[1]
。这意味着错误从第二行开始,不能再进一步了。我已经编辑了一点代码(一些问题中看不到的数据),现在它像一个符咒一样工作:)谢谢!