gpt4 book ai didi

java - Runtime.exec() 中可以传递的参数的最大数量是多少?

转载 作者:行者123 更新时间:2023-11-30 05:34:07 25 4
gpt4 key购买 nike

我正在尝试将大量参数传递给 Runtime.().exec:

Runtime.getRuntime().exec(new String[] { executable, script, fnamePath, blah, blah, .... });

添加第 12 个参数后的脚本显示:

Error: Subscript out of range
Code: 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!

用Java执行上述VBS: Runtime Method in Java

结果错误消息:

VBS Error

最佳答案

传递的参数没有限制,但这不是问题。

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

executablescript 命令数组参数之后的屏幕截图中,我只看到传递了 13 个参数,但 VBScript 预计有 14 个(WshArguments 对象集合使用从零开始的索引)

@Yuanyo mentions above您传递的参数列表中缺少 SalesDashload,使其成为第 14 个参数,该参数会将其映射到 VBScript 中的 Arg(13)

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

Runtime.getRuntime().exec(new String[] {executable, script, fnamePath, loginScr1, stLink1, dashLoad1, role1, consent1, dash1, servMenu1, followUp1, servReq1, SRN1, PoP1, docSubmit1, salesDashLoad1 });

您可以在 VBScript 中捕获这一点,方法是使用 Arg.Count 来检查您是否有 14 个参数,然后再继续执行脚本,也许 throwing an error如果不这样做或退出脚本。

Dim objOutlook, myMail, Arg
Const ExpectArgCount = 14
Set objOutlook = CreateObject("Outlook.Application")
'Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set myMail = objOutlook.CreateItem(0)
Set Arg = WScript.Arguments

If Arg.Count = ExpectArgCount Then
myMail.Attachments.Add Arg(0)
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)
Else
Call Err.Raise(vbObjectError + 1, "My Application", "Incorrect number of arguments passed")
End If

关于java - Runtime.exec() 中可以传递的参数的最大数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56954263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com