2013-07-02 4 views
2

아래 스크립트를 사용하여 다른 스크립트를 호출합니다. 문제는 내가 호출하는 두 번째 스크립트에 WScript.Arguments로 검색 한 인수를 전달해야한다는 것입니다. 누군가 제발 어떻게하는지 말해줘.다른 vbscript 파일에서 vbscript를 호출하여 인수를 전달합니다.

Dim objShell 
Set objShell = Wscript.CreateObject("WScript.Shell") 

objShell.Run "TestScript.vbs"  

Set objShell = Nothing 

답변

6

적절한 인수 인수를 사용하여 인수 목록을 작성해야합니다. 또한 명명 된 인수와 명명되지 않은 인수를 구별해야합니다. 최소한 공백이있는 모든 인수는 큰 따옴표로 묶어야합니다. 그것은 모든 인수를 단순히를 인용,하지만 다치게하지 않습니다, 그래서 당신은 이런 일을 할 수있는 :

Function qq(str) 
    qq = Chr(34) & str & Chr(34) 
End Function 

arglist = "" 
With WScript.Arguments 
    For Each arg In .Named 
    arglist = arglist & " /" & arg & ":" & qq(.Named(arg)) 
    Next 
    For Each arg In .Unnamed 
    arglist = arglist & " " & qq(arg) 
    Next 
End With 

CreateObject("WScript.Shell").Run "TestScript.vbs " & Trim(arglist), 0, True 
+0

super cool .. ur 도움을 주셔서 감사합니다. – user505210

+0

'argq = arglist & quot; "qq (arg)'줄의''기대 된 예상 종료 시점 '에서'qq (arg) ' – user

+0

@user 나쁘지. '''와''qq (arg) '사이에 있어야 할 앰퍼샌드가있었습니다. 결정된. –

1

사용 : (

objShell.Run "TestScript.vbs arg1 arg2 ""this is three""" 

또는 아포스트로피를 수용 할 수있다 : 인수 중 하나가 다음에 공백이 포함되어 있으면

objShell.Run "TestScript.vbs arg1 arg2" 

당신은 아마 다음과 같이 인용 부호로 다음을 포함해야합니다 나는 최근에 이것을 시도하지 않았다).

+0

: test1.vbs 파일에 전달 Test.vbs를 파일에서 메시지 상자를, 결과

x = WScript.Arguments.Item(0) msgbox x 

내 첫 번째 스크립트에서이 문을 설정합니다. objArgs = WScript.Arguments 및이 objArgs 인수를 다음 스크립트에 전달하고 싶습니다 .It objArgs를 값이있는 객체가 아닌 다음 스크립트로 문자열로 전달하는 것입니다. – user505210

+0

@ user505210 - .Run 또는 .Exec로 만든 프로세스에 인수로 개체를 전달할 수 없습니다. 원하는 모든 정보를 문자열로 변환해야합니다 (WScript.Arguments (.Named)는 문자열 목록이므로 어렵지 않습니다). –

+0

'.Run'을 사용할 때 전달한 인수는 본질적으로 단순한 문자열입니다. 수신 스크립트가 객체를 객체에 저장하지만이 간단한 명령 행 메소드 - 이벤트로 객체를 전달할 수는 없습니다. 스크립트간에 객체를 전달하려면 VBScript를 사용한 간단한 프로세스가 아닌 별도의 파일에서 직렬화 및 비 직렬화해야합니다. Ekkehard와 함께 두 번째 스크립트에 문자열/값을 전달하는 것이 좋습니다. –

0

내가 대답 좀 혼란을 발견, 그래서 여기 내 마음에 더 간단하게 보여줍니다 광산이다 . 다른 대답은 틀린 것이 아니라 단지 약간 다릅니다 (약간).

Set shell = CreateObject("WScript.Shell") 
shell.CurrentDirectory = "C:\some\path\" 
x = "testing" 
shell.Run "test1.vbs " & x 

에서 C:\some\path\test1.vbs 파일 : Test.vbs를 파일에

testing 
관련 문제