2015-04-01 2 views
0

Я пытаюсь выяснить, как запустить сценарий с несколькими аргументами, но каждый аргумент должны иметь двоеточие между ними them..so, например:несколько заданы параметров с двоеточием

setup.exe SERVERNAME: PORT

проблемы, которые я хочу более прибывавшей являются:

1. проблема заключается в том, что пользователь может ввести в число аргументов, введенных

2. аргументы должен иметь двоеточие между ними и должен быть завершен как SERVERNAME: PORT - есть способ сделать g это?

У меня внизу написано черновик, и я не слишком уверен, что он даст мне то, что я хочу?

argsCount = WScript.Arguments.Count 
Set args = Wscript.Arguments 

If argsCount < 1 then 
    WScript.Echo "Error no arguments selected - usage: script.vbs <SERVERNAME>:<PORT>, <SERVERNAME>:<PORT>, <SERVERNAME>:<PORT> etc" 
    WScript.Quit 
Else 
    For Each arg In args 
     setup.exe <IP>:<PORT> 
    Next 
End If 

ответ

0

Если вы готовы опускать и использовать RegExp:

Option Explicit 

Dim args : Set args = WScript.Arguments.Unnamed 

If args.Count < 1 then 
    WScript.Echo "Error no arguments selected - usage: script.vbs <SERVERNAME>:<PORT> <SERVERNAME>:<PORT> <SERVERNAME>:<PORT> etc" 
    WScript.Quit 
Else 
    Dim r : Set r = New RegExp 
    r.Pattern = "^\w+:\d+$" 
    Dim a, m 
    For Each a In args 
     Set m = r.Execute(a) 
     If 1 <> m.Count Then 
      WScript.Echo "Bingo:", a 
     Else 
      WScript.Echo "setup.exe", m(0).Value 
     End If 
    Next 
End If 

выход:

cscript y.vbs 
Error no arguments selected - usage: script.vbs <SERVERNAME>:<PORT> <SERVERNAME>:<PORT> <SERVERNAME>:<PORT> et 
c 

cscript y.vbs server:123 a:0 0:a "nice try:4711" abc:abc abc:000 
setup.exe server:123 
setup.exe a:0 
Bingo: 0:a 
Bingo: nice try:4711 
Bingo: abc:abc 
setup.exe abc:000 

Версия 0.2:

Использование Split (OneAndOnlyArg , ",") для подачи RegExp:

Option Explicit 

Dim args : Set args = WScript.Arguments.Unnamed 

If args.Count <> 1 then 
    WScript.Echo "Error no arguments selected - usage: script.vbs <SERVERNAME>:<PORT>,<SERVERNAME>:<PORT>,<SERVERNAME>:<PORT> etc" 
    WScript.Quit 
Else 
    Dim r : Set r = New RegExp 
    r.Pattern = "^\w+:\d+$" 
    Dim a, m 
    For Each a In Split(args(0), ",") 
     Set m = r.Execute(a) 
     If 1 <> m.Count Then 
      WScript.Echo "Bingo:", a 
     Else 
      WScript.Echo "setup.exe", m(0).Value 
     End If 
    Next 
End If 

выход:

cscript y.vbs server:123,a:0,0:a,abc:abc,abc:000 
setup.exe server:123 
setup.exe a:0 
Bingo: 0:a 
Bingo: abc:abc 
setup.exe abc:000 

Обратите внимание, что пробелы будут нарушать этот подход.

+0

это действительно хорошо ... К сожалению, файл setup.exe я использую Досталось есть, и я просто понял, что не может быть пробел между them..so, оно должно быть : , : ..... любой шанс сделать это, как это, пожалуйста? – lara400

Смежные вопросы