vbscript
Dateien einschließen
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 vonIncludeFile(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