Suche…


Einführung

Wenn Sie VbScript in der Windows-Shell ausführen, gibt es keine integrierte Funktion zum Einschließen einer Datei. Um Ihren Code in verschiedenen Dateien zu organisieren, müssen Sie dazu eine Methode erstellen.

Bemerkungen

Ein paar Dinge, die bei der Verwendung der IncludeFile(p_Path) -Methode zu IncludeFile(p_Path) :

  • Es kann keine Einschränkung des Dateityps angegeben werden, der Inhalt der enthaltenen Dateien muss jedoch VbScript sein.
  • Wenn die enthaltene Datei einen Syntaxfehler enthält, wird die Zeile / Spalte des Fehlers nicht angezeigt.
  • Sie müssen std_internal_LibFiles vor dem ersten Aufruf von IncludeFile(p_Path) definieren und initialisieren.
  • Sie können IncludeFile(p_Path) beliebiger Stelle in Ihrem Code verwenden, einschließlich anderer Methoden.

Erstellen einer "Include-Datei" -Methode

Das Hauptziel dieser Funktion ist also:

  • Seien Sie Standalone, weil es in die VbScript-Hauptdatei geschrieben werden muss und nicht in einer enthaltenen Datei enthalten sein kann (weil sie die Include-Funktion definiert).
  • Geben Sie genügend Informationen an, wenn etwas schief geht (dh die Datei, die eingefügt wurde, der aufgetretene Fehler, ...)
  • Fügen Sie eine Datei nur einmal ein, um Include-Schleifen zu vermeiden.
' *************************************************************************************************
'! 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

Einschließlich Dateien

Um eine Datei in eine andere Datei aufzunehmen, verwenden Sie einfach den einen Liner:

IncludeFile "myOtherFile.vbs"

Globale Initialisierung

Bevor wir die IncludeFile-Methode verwenden, müssen wir:

  • Deklarieren Sie std_internal_LibFiles global
  • Initialisieren Sie es mit einem neuen Wörterbuch
Dim std_internal_LibFiles
Set std_internal_LibFiles = CreateObject("Scripting.Dictionary")


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow