【发布时间】:2021-09-02 12:28:55
【问题描述】:
这是我编译并获取其 exe 的代码:
private static void Main(string[] args)
{
var t1 = args[0];
var t2 = args[1];
}
这是我在 .bat 文件中写的:
"app.exe" "text\" "text"
这是我在 powershell 中写的:
>.\run.bat
这是错误:
一些/路径/...>“app.exe”“路径/到/项目”“项目”
未处理的异常。 System.IndexOutOfRangeException:索引超出了数组的范围。
在 path/to/app.cs:line 12 中的 theApp.Main(String[] args) 处
这很奇怪,因为我在 bat 文件中编写的行在我直接在 powershell 中编写并按 enter 时运行良好,但是当我尝试从另一个 powershell 控制台运行 bat 文件时它的行为不同。
【问题讨论】:
-
打开标准命令提示符(cmd.exe,而不是 powershell)。粘贴到`“app.exe”“some text1”“some text2”`并运行它。会发生什么?
-
您直接访问
args,而没有先检查是否有任何args。在你提供它们的 bat 中,因此一切正常,但你的 powershell 版本没有参数,并且由于缺少这些参数而出现错误。 -
@Alejandro
but your powershell version has no arguments你是怎么得出这个结论的? -
@mjwills 因为问题是这样说的:
this is what i write in powershell:和>.\run.bat。 -
@mjwills 同样的错误
标签: c# command-line exe