[Automation/All] vbscript에서 공용함수를 별도 파일에 보관하고 include 처럼 불러쓰기

Version 1

    사용하는 script가 많아질 수록 공통으로 사용되는 자신의 함수를 공통 파일로 관리하면 편리합니다.

     

    vbscript에서는 ExecuteGlobal 을 통해 문자열 변수에 보관된 내용을 실행할 수 있습니다. 특히 ExecuteGlobal 명령은 함수(function 또는 sub) 내에서 실행할 경우에 함수 정의가 포함된 내용이 포함되어 있더라도에러가 발생하지 않습니다.

     

     

    아래의 예문은 하나의 예로, sTexts 변수에 서브루틴을 정의한 후, ExecuteGlobal을 통해 불러오고 서브루틴을 호출하도록 구성되었습니다.

     

    이 내용을 .vbs 파일로 저장하여 실행하면 메시지 박스에 현재 시간을 표시하는 MySubRoutine이 호출됩니다.

     

     


    Dim sTexts

    sTexts = "Sub MySubRoutine" & vbCrLf & _
             "  MsgBox TimeValue(Time)" & vbCrLf & _
             "End Sub"

     

    ExecuteGlobal sTexts

     

    Call MySubRoutine

     

     

    위의 예제에서 sTexts 를 정의하는 부분을 파일로부터 읽도록 처리하면 공용 파일을 만들어 마치 라이브러리를 include하는 것과 똑같은 효과를 줄 수 있습니다.

     

    아래의 예와 같이 두 개의 파일을 만들어 위의 script를 실행하면 아래의 파일에서 정의한 서브루틴을 자유롭게 호출할 수 있게 됩니다.

     

     

    실행할 script) 이 예제에서는 C:\WDIR\MyCommonVbs.vbs 에 아래의 MySubRoutine 정의 파일이 보관되어 있다고 가정합니다.

     


    Include("C:\WDIR\MyCommonVbs.vbs")   ' The file that has MySubRoutine definition

    Call MySubRoutine

    Sub Include(sFilePath)
        Dim oFileSystem, oTextFile, sText
       
        Set oFileSystem = CreateObject("Scripting.FileSystemObject")
        Set oTextFile = oFileSystem.OpenTextFile(sFilePath, 1)   ' 1 = ForReading
       
        sText = oTextFile.ReadAll
        ExecuteGlobal sText
    End Sub

     

    공용함수를 보관하는 script)

     


    Sub MySubRoutine

      MsgBox TimeValue(Time)

    End Sub

     

     


    ExecuteGlobal 명령의 사용에 대해서는 마이크로소프트가 운영하는 MSDN(Microsoft Developer Network)에 자세히 소개되어 있습니다.

     

    http://msdn.microsoft.com/en-us/library/342311f1(v=vs.84).aspx