控制台应用程序参数转换为任务计划程序参数(已关闭)

3

我对这个主题进行了大量研究,但我发现所有的信息都是误导性的,与我所寻找的信息无关。因此,我希望这里的任何人都能给我一个明确的解释。

基本上,我有一个程序,我想在任务计划程序中使用它。但是,无论我在框中输入什么参数,它都会显示“索引位于数组界外”。

我知道参数与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上找到了这段代码。我假设第一个参数与第一个参数相关联,以此类推。
在任务计划程序中,我基本上浏览到发布的可执行文件: enter image description here
当然,在运行程序时,pathmail部分要长得多,但这只是为了举例说明。
我需要删除逗号吗?并且/或在每个参数前面添加-?还是完全不同的东西?
提前感谢!
2个回答

4
通常,命令行参数由单个空格字符分隔,而不是逗号。此外,如果您的任何参数包含空格,则需要用双引号将参数括起来:
"C:\My Documents\xxx" x@y.z 10

我不知道任务计划程序如何提供其参数,但您当然可以在使用它们之前记录参数,以查看传递给您的应用程序的确切内容。


这样做并没有错,但通常你会先检查args.Length,而不是仅仅假设用户提供了正确数量的参数。我希望日志能够准确地显示发生了什么。 - undefined
根据我的程序,实际上数组出现了问题。因为错误从[1]开始,当我尝试将[1][0]交换时,错误仍然停留在[1]。这意味着错误发生在第二行,无法继续执行。 - undefined
我稍微修改了代码(问题中看不见的一些数据),现在它工作得非常好 :) 谢谢! - undefined

1

虽然我认为你已经知道这些,但为了确保: 你需要用空格分隔参数。如果参数包含空格(例如路径),请将它们放在双引号中。

为什么不编写一个简单的测试应用程序,将完整的 paramsarray 转储到文本文件中。 然后你就应该知道如何正确地解释它们了。


哈哈,抱歉我不知道。我只是个初学者,别评判我;)我可以问你在哪里放双引号的任何想法吗? - undefined
text.exe "C:\Program Files (x86)\Whatever" nextparamnoblanks "param with blanks!" - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接