You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# exe通过bat传参运行报IndexOutOfRangeException 直接运行正常

问题原因

两种执行方式的参数解析规则差异是根本原因:

  • 直接在PowerShell中执行启动命令时,由PowerShell本身完成参数解析:PowerShell不会把双引号字符串末尾的\"识别为转义字符,会正常拆分出两个参数text\、text传递给程序,程序取args[0]、args[1]都合法。
  • 执行.bat批处理文件时,PowerShell会将批处理交给cmd.exe解析运行:cmd的转义规则中,双引号包裹的字符串末尾的\"会被识别为转义后的普通双引号,会导致第一个参数的引号没有正常闭合,后续的 "text"会被合并到第一个参数的内容中,最终传递给程序的args数组只有1个元素,取args[1]就会触发下标越界错误。

解决方案

可任选以下一种方式修复:

  • 修改批处理中的参数写法,把末尾带反斜杠的参数的反斜杠双写,更改后的批处理内容如下:
    "app.exe" "text\\" "text"
    
  • 把参数末尾的反斜杠挪到双引号外侧,写法如下:
    "app.exe" "text"\" "text"
    
  • 如果参数是路径,也可以把反斜杠替换为正斜杠,Windows系统会正常识别路径,写法如下:
    "app.exe" "text/" "text"
    

内容的提问来源于stack exchange,提问作者رضا ادیبی

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:51:02