2017-09-14 2 views

Répondre

-1

Cet exemple appelle fonction ou sub et trouve le bon appel dynamiquement. Sur la ligne de commande, vous indiquez 'functionToExecute' comme le nom de la fonction que vous voulez appeler ou 'subToExecute' comme le sous-programme que vous voulez appeler. Deux exemples pour appeler le VBS à partir de la ligne de commande pour un sous et une fonction respectivement:

cscript.exe demo.vbs subToExecute 
cscript.exe demo.vbs functionToExecute 

Dans le script VBS obtenir le nom de la routine de l'argument de ligne de commande et décider d'appeler un sous-programme ou appelez un fonction:

On Error Resume Next 
mySubOrFuncName = WScript.Arguments.Item(0) 'name of the subroutine or function 
subCall = "call " & mySubOrFuncName & "()" 
Execute subCall 

If Err.Number <> 0 Then 'if sub could not be called, take the function call 
    eval(mySubOrFuncName) 
    Err.Clear 
End If 

WScript.Quit 

'this is a subroutine you already have 
Sub subToExecute 
    MsgBox "inside a sub" 
    'do stuff 
End Sub 

'this is a function you already have 
Function functionToExecute 
    MsgBox "inside a function" 
    'do stuff 
End Function 

exemple pratique pour la manipulation de ligne de commande VBS: https://ss64.com/vb/syntax-args.html

+0

Cela m'a aidé. Mais comme vous l'avez mentionné, eval() n'a pas fonctionné pour moi. – user8533698

+2

@ user8533698 'Eval()' évalue une condition à laquelle il ne peut pas exécuter des instructions complètes, vous devez utiliser 'Execute()'/'ExecuteGlobal()' à la place. En outre, l'exemple ci-dessus provoque une erreur de syntaxe en raison de la chaîne incorrecte affectée à 'a'. Ne pas accepter les réponses incomplètes/fausses, cela n'aide personne. – Lankymart

+1

juste corrigé l'erreur de syntaxe dans l'affectation à 'a' –