Поиск…


Вступление

При запуске VbScript в оболочке Windows нет встроенной функции для включения файла, поэтому для организации вашего кода в разных файлах вам потребуется создать способ для этого.

замечания

Несколько вещей, которые следует учитывать при использовании IncludeFile(p_Path) :

  • Нет ограничений на тип файла, который может быть включен, но содержимое включенных файлов должно быть VbScript.
  • Если во включенном файле есть синтаксическая ошибка, вы не получите строку / столбец ошибки.
  • Вы должны определить и инициализировать std_internal_LibFiles перед первым вызовом IncludeFile(p_Path)
  • Вы можете использовать IncludeFile(p_Path) любом месте вашего кода, включая другие методы.

Создание метода «include file»

Таким образом, главная цель этой функции:

  • Станьте автономным, потому что его нужно записать в основной файл VbScript и не может быть во включенном файле (поскольку он определяет функцию include)
  • Предоставьте достаточную информацию, если что-то пойдет не так (то есть, файл, который был включен, произошла ошибка, ...)
  • Включите файл один раз и только один раз, чтобы избежать включения циклов.
' *************************************************************************************************
'! Includes a VbScript file
'! @param p_Path    The path of the file to include
' *************************************************************************************************
Sub IncludeFile(p_Path)
    ' only loads the file once
    If std_internal_LibFiles.Exists(p_Path) Then
        Exit Sub
    End If
    
    ' registers the file as loaded to avoid to load it multiple times
    std_internal_LibFiles.Add p_Path, p_Path

    Dim objFso, objFile, strFileContent, strErrorMessage
    Set objFso = CreateObject("Scripting.FileSystemObject")
    
    ' opens the file for reading
    On Error Resume Next
    Set objFile = objFso.OpenTextFile(p_Path)
    If Err.Number <> 0 Then
        ' saves the error before reseting it
        strErrorMessage = Err.Description & " (" &  Err.Source & " " & Err.Number & ")"
        On Error Goto 0
        Err.Raise -1, "ERR_OpenFile", "Cannot read '" & p_Path & "' : " & strErrorMessage
    End If
    
    ' reads all the content of the file
    strFileContent = objFile.ReadAll
    If Err.Number <> 0 Then
        ' saves the error before reseting it
        strErrorMessage = Err.Description & " (" &  Err.Source & " " & Err.Number & ")"
        On Error Goto 0
        Err.Raise -1, "ERR_ReadFile", "Cannot read '" & p_Path & "' : " & strErrorMessage
    End If
    
    ' this allows to run vbscript contained in a string
    ExecuteGlobal strFileContent
    If Err.Number <> 0 Then
        ' saves the error before reseting it
        strErrorMessage = Err.Description & " (" &  Err.Source & " " & Err.Number & ")"
        On Error Goto 0
        Err.Raise -1, "ERR_Include", "An error occurred while including '" & p_Path & "' : " & vbCrlf & strErrorMessage
    End If
End Sub

Включая файлы

Чтобы включить файл в другой файл, просто используйте один лайнер:

IncludeFile "myOtherFile.vbs"

Глобальная инициализация

Прежде чем использовать метод IncludeFile, нам необходимо:

  • Объявлять std_internal_LibFiles глобально
  • Инициализировать его с помощью нового словаря
Dim std_internal_LibFiles
Set std_internal_LibFiles = CreateObject("Scripting.Dictionary")


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow