我正在尝试将大量参数传递给Runtime.().exec
:
Runtime.getRuntime().exec(new String[] { executable, script, fnamePath, blah, blah, .... });
添加第12个参数后的脚本说:
错误:下标超出范围
代码:800A0009
您能否让我知道传递大量论证的最佳方法是什么?或者,请更正我的方法以实现传递质量参数。
请让我知道是否需要更多详细信息...
VBS代码:
Set objOutlook = CreateObject("Outlook.Application")
'Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set myMail = objOutlook.CreateItem(0)
Set Arg = WScript.Arguments
myMail.Attachments.Add Arg(0) 'Just to let you know I'm using the Arg(0) as well
IMED = Arg(1)
URL = Arg(2)
dashLoad = Arg(3)
roles = Arg(4)
consent = Arg(5)
dash = Arg(6)
servMenu = Arg(7)
folowUp = Arg(8)
servReq = Arg(9)
SRN = Arg(10)
PoP = Arg(11)
Doc = Arg(12)
SalesDashLoad = Arg(13)
MsgBox (SalesDashLoad) ' THIS LINE gives me error, till Agr(12) works fine!
结果错误消息:
答案 0 :(得分:1)
传递的参数没有限制,但这不是问题。
您需要记住,对canvas.drawArc(Rect.fromCircle(center: center, radius: radius),
startRadian, radians[i], true, paint);
的Java调用首先是触发VBScript托管可执行文件(可能是Runtime.getRuntime().exec()
或cscript.exe
),并传递脚本要执行的文件路径,它将在您发送到wscript.exe
的命令数组中占用两个参数。
在exec()
和executable
命令数组参数之后的屏幕快照中,我仅看到传递了13个参数,但是VBScript期望14个(script
对象集合使用零,索引)。
在@Yuanyo mentions above中,您正在传递的参数列表中缺少WshArguments
,这使其成为第14个参数,它将在VBScript中将其映射到SalesDashload
。
正确的输入将是类似的东西(很明显,我不知道您的变量名只能根据您现有的变量进行猜测或推断);
Arg(13)
您可能已经在VBScript中捕获了这一点,方法是在继续执行脚本之前使用Runtime.getRuntime().exec(new String[] {executable, script, fnamePath, loginScr1, stLink1, dashLoad1, role1, consent1, dash1, servMenu1, followUp1, servReq1, SRN1, PoP1, docSubmit1, salesDashLoad1 });
检查是否具有14个参数,如果不执行或退出脚本,则可能使用throwing an error。
Arg.Count
答案 1 :(得分:0)
问题似乎是您使用的索引。您缺少SalesDashLoad的参数。
您应该具有以下内容:
Runtime.getRuntime().exec(new String[] {executable, script, fnamePath, loginScr1, stLink1, dashLoad1, role1, consent1, servMenu1, followUp1, servReq1, SRN1, PoP1, docSubmit1, salesDLoad1});
Arguments属性包含WshArguments对象(参数的集合)。使用从零开始的索引从此集合中检索单个参数。
您可以在此处了解更多信息: https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/windows-scripting/z2b05k8s(v=vs.84)