Szukaj…


Wprowadzenie

Podczas uruchamiania VbScript w powłoce systemu Windows nie ma wbudowanej funkcji dołączania pliku, dlatego aby uporządkować kod w różnych plikach, musisz stworzyć metodę, aby to zrobić.

Uwagi

Podczas korzystania z IncludeFile(p_Path) należy pamiętać o IncludeFile(p_Path) :

  • Nie ma ograniczeń co do typu pliku, który można dołączyć, ale zawartością plików musi być VbScript.
  • Jeśli w dołączonym pliku występuje błąd składniowy, nie otrzymasz linii / kolumny błędu.
  • Musisz zdefiniować i zainicjować std_internal_LibFiles przed pierwszym wywołaniem IncludeFile(p_Path)
  • Możesz użyć IncludeFile(p_Path) dowolnym miejscu kodu, w tym innych metod.

Tworzenie metody „dołącz plik”

Zatem głównym celem tej funkcji jest:

  • Bądź samodzielny, ponieważ musi być zapisany w głównym pliku VbScript i nie może znajdować się w pliku dołączonym (ponieważ definiuje funkcję dołączania)
  • Podaj wystarczającą ilość informacji, jeśli coś pójdzie nie tak (np. Dołączany plik, błąd, który wystąpił, ...)
  • Dołącz plik tylko raz, aby uniknąć pętli dołączania.
' *************************************************************************************************
'! 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

W tym pliki

Aby dołączyć plik do innego pliku, wystarczy użyć jednego linera:

IncludeFile "myOtherFile.vbs"

Globalna inicjalizacja

Zanim użyjemy metody IncludeFile, musimy:

  • Deklaruj std_internal_LibFiles globalnie
  • Zainicjuj go za pomocą nowego słownika
Dim std_internal_LibFiles
Set std_internal_LibFiles = CreateObject("Scripting.Dictionary")


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow