Нет ограничений на количество передаваемых аргументов, но это не проблема.
Вы должны помнить, что Java-вызов Runtime.getRuntime().exec()
сначала запускает исполняемый файл VBScript Hosted (может бытьcscript.exe
или wscript.exe
) и передача пути к файлу сценария для выполнения, он принимает два аргумента в массиве команд, который вы отправляете на exec()
.
На снимке экрана после executable
и script
аргументы массива команд. Я вижу только 13 передаваемых аргументов, но VBScript ожидает 14 (WshArguments
коллекция объектов использует индекс, начинающийся с нуля) .
As @Yuanyo упоминает выше вы пропускаете SalesDashload
из передаваемого списка аргументов, делая его 14-м аргументом, который отобразит его на Arg(13)
в VBScript.
Исправленный ввод будет чем-токак (очевидно, я не знаю, как называются ваши переменные, я могу только догадываться или делать выводы на основе ваших существующих) ;
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 аргументов, и, возможно, выдает ошибку , если вы этого не делаете, или выходите из сценария.
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