Java 在Runtime.exec()中可以传递的最大参数数是多少?

Java 在Runtime.exec()中可以传递的最大参数数是多少?,java,vbscript,arguments,parameter-passing,runtime.exec,Java,Vbscript,Arguments,Parameter Passing,Runtime.exec,我正在尝试将大量参数传递给运行时。(。exec: Runtime.getRuntime().exec(新字符串[]{executable,script,fnamePath,blah,blah,…。}); 添加第12个参数后的脚本说: 错误:下标超出范围 代码:800A0009 你能告诉我传递大量争论的最佳方式是什么吗?或者,请纠正我的方法,以实现传递大量参数 请让我知道如果需要任何进一步的细节 VBS代码: Set objOutlook=CreateObject(“Outlook.Applic

我正在尝试将大量参数传递给
运行时。(。exec

Runtime.getRuntime().exec(新字符串[]{executable,script,fnamePath,blah,blah,…。});
添加第12个参数后的脚本说:

错误:下标超出范围
代码:800A0009

你能告诉我传递大量争论的最佳方式是什么吗?或者,请纠正我的方法,以实现传递大量参数

请让我知道如果需要任何进一步的细节

VBS代码:

Set objOutlook=CreateObject(“Outlook.Application”)
'Set objNameSpace=objOutlook.GetNamespace(“MAPI”)
设置myMail=objOutlook.CreateItem(0)
Set Arg=WScript.Arguments
myMail.Attachments.Add Arg(0)”只是为了让您知道我也在使用Arg(0)
IMED=Arg(1)
URL=Arg(2)
dashLoad=Arg(3)
角色=Arg(4)
同意=Arg(5)
破折号=Arg(6)
servMenu=Arg(7)
followup=Arg(8)
servReq=Arg(9)
SRN=Arg(10)
PoP=Arg(11)
Doc=Arg(12)
SalesDashLoad=Arg(13)
MsgBox(SalesDashLoad)'这行给了我错误,直到Agr(12)工作正常!
在Java中执行上述VBS:

结果错误消息:


问题似乎在于您使用的索引。您缺少SalesDashLoad的参数

您应该有如下内容:
Runtime.getRuntime().exec(新字符串[]{executable,script,fnamePath,loginScr1,stLink1,dashLoad1,role1,approve1,servMenu1,followUp1,servReq1,SRN1,PoP1,docSubmit1,saledload1})

Arguments属性包含WshArguments对象(参数的集合)。使用基于零的索引从此集合检索单个参数

您可以在此处阅读更多内容:
传递的参数没有限制,但这不是问题所在

您需要记住,对
Runtime.getRuntime().exec()
的Java调用首先触发VBScript托管的可执行文件(可能是
cscript.exe
wscript.exe
)并传递要执行的脚本文件路径,这将占用发送给
exec()
的命令数组中的两个参数

可执行文件
脚本
命令数组参数后的屏幕截图中,我只看到传递了13个参数,但VBScript预期传递14个参数(
WshArguments
对象集合使用基于零的索引)

由于您正在传递的参数列表中缺少
SalesDashload
,因此将其作为第14个参数,将其映射到VBScript中的
Arg(13)

正确的输入应该是,类似(显然我不知道你的变量叫什么,只能根据你现有的变量猜测或推断)

Runtime.getRuntime().exec(新字符串[]{executable,script,fnamePath,loginScr1,stLink1,dashLoad1,role1,approve1,dash1,servMenu1,followUp1,servReq1,SRN1,PoP1,docSubmit1,salesdahload1});
您可以通过使用
Arg.Count
在继续脚本之前检查您有14个参数,如果没有或退出脚本,则可以在VBScript中捕获这些参数

Dim objOutlook,myMail,Arg
Const ExpectArgCount=14
设置objOutlook=CreateObject(“Outlook.Application”)
'Set objNameSpace=objOutlook.GetNamespace(“MAPI”)
设置myMail=objOutlook.CreateItem(0)
Set Arg=WScript.Arguments
如果Arg.Count=ExpectArgCount,则
myMail.Attachments.Add参数(0)
IMED=Arg(1)
URL=Arg(2)
dashLoad=Arg(3)
角色=Arg(4)
同意=Arg(5)
破折号=Arg(6)
servMenu=Arg(7)
followup=Arg(8)
servReq=Arg(9)
SRN=Arg(10)
PoP=Arg(11)
Doc=Arg(12)
SalesDashLoad=Arg(13)
MsgBox(SalesDashLoad)
其他的
调用Err.Raise(vbObjectError+1,“我的应用程序”,“传递的参数数量不正确”)
如果结束

您发布的代码一开始看起来不像是VBScript。要获得有关VBScript错误的帮助,您需要显示VBScript代码(更具体地说是其中的一部分)。您可以说“在第12个参数之后”,但从VBScript代码中,它需要14个参数(因为集合从
0
开始)。您需要检查是否正在传递14个参数,否则
Arg(13)
将失败,并出现
下标超出范围的错误。返回并检查是否传入了14个参数。有关正确创建和处理流程的许多好提示,请参阅。然后忽略它引用
exec
,并使用
ProcessBuilder
创建流程。另外,将
String arg
分解为
String[]args
,以解释包含空格字符的路径。不幸的是,我很难理解您的答案,因为它仍然只包含13个参数,而预期只有14个,我想这是因为您缺少列表中的
dash
参数。是的,dash不见了,对不起。如果你加上它,你应该让它工作。