your programing

인수를 VBScript (cscript로 시작된 VBS 파일)에 전달할 수 있습니까?

lovepro 2020. 10. 16. 07:53
반응형

인수를 VBScript (cscript로 시작된 VBS 파일)에 전달할 수 있습니까?


이 스크립트는 "test.vbs"에 저장되어 있습니다.

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing

스크립트를 실행할 때 "workFolder"변수의 값을 전달하고 싶습니다.

어떻게 할 수 있습니까? 할 수 있습니까? 아마도 "cscript test.vbs workFolder : 'C : \ temp \'"와 같은 것입니까?

보너스 질문 : "Set workFolder = Nothing"을 사용하여 전달 된 변수를 정리해야합니까? 아니면 VBSCript가 종료 될 때 자동으로 수행합니까? "Set File = Nothing"및 "Set FSO = Nothing"도 필요하지 않을 수도 있습니다. 이 두 가지 질문에 대한 답을 알고 있으면 알려주십시오.


를 사용 WScript.Arguments하여 스크립트에 전달 된 인수에 액세스 할 수 있습니다 .

스크립트 호출 :

cscript.exe test.vbs "C:\temp\"

스크립트 내부 :

Set File = FSO.OpenTextFile(WScript.Arguments(0) &"\test.txt", 2, True)

실제로 스크립트에 인수가 전달되었는지 확인하는 것을 잊지 마십시오. Count속성 을 확인하여 그렇게 할 수 있습니다 .

if WScript.Arguments.Count = 0 then
    WScript.Echo "Missing parameters"
end if

파일을 닫은 후 스크립트가 끝나면 변수를로 설정할 필요가 없습니다 Nothing. 리소스는 cscript.exe 프로세스가 종료 될 때 자동으로 정리됩니다. Nothing일반적으로 변수를로 설정하는 것은 스크립트를 실행하는 동안 명시 적으로 리소스를 해제하려는 경우에만 필요합니다. 이 경우 COM 개체에 대한 참조를 포함하는 변수를로 설정하면 Nothing스크립트가 종료되기 전에 COM 개체가 해제됩니다. 이것은 보너스 질문에 대한 간단한 대답 일 뿐이며 다음과 같은 관련 질문에서 더 많은 정보를 찾을 수 있습니다.

VBA 함수 내에서 개체를 Nothing으로 설정해야합니까?

VB6에서 언제 변수를 "Nothing"으로 설정해야합니까?


VBS 내에서 매개 변수에 액세스 할 수 있습니다.

Wscript.Arguments(0)
Wscript.Arguments(1)

등등. 매개 변수 수 :

Wscript.Arguments.Count

명령 줄을 통해 전달 된 각 인수는 다음을 사용하여 액세스 할 수 있습니다. Wscript.Arguments.Item (0) 여기서 0은 인수 번호입니다 : 즉, 0, 1, 2, 3 등.

따라서 코드에서 다음을 가질 수 있습니다.

strFolder = Wscript.Arguments.Item(0) 

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(strFolder, 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing

wscript.arguments.count를 사용하면 누군가가 적절한 값을 입력하지 않은 경우 오류 트랩을 수행 할 수 있습니다.

MS Technet 예


모든 Args를 얻으려면 이것을 시도하십시오.

Set Args=WSH.Arguments
For x=0 To Args.Count-1
 WSH.Echo "Arg_"&x+1&" = "&Args(x)
Next

참고 URL : https://stackoverflow.com/questions/2806713/can-i-pass-an-argument-to-a-vbscript-vbs-file-launched-with-cscript

반응형