Zoeken…


Invoering

Wanneer u VbScript in Windows-shell uitvoert, is er geen ingebouwde functie om een bestand op te nemen. Om uw code in verschillende bestanden te organiseren, moet u daarvoor een methode maken.

Opmerkingen

Een paar dingen om in gedachten te houden bij het gebruik van de methode IncludeFile(p_Path) :

  • Er is geen beperking van het bestandstype dat kan worden opgenomen, maar de inhoud van het opgenomen bestand moet VbScript zijn.
  • Als het meegeleverde bestand een syntaxisfout bevat, krijgt u niet de regel / kolom van de fout.
  • U moet std_internal_LibFiles definiëren en initialiseren vóór de eerste aanroep van IncludeFile(p_Path)
  • U kunt IncludeFile(p_Path) overal in uw code gebruiken, inclusief andere methoden.

Een methode "bestand opnemen" maken

Het hoofddoel van deze functie is dus:

  • Wees standalone omdat het in het hoofd VbScript-bestand moet worden geschreven en niet in een opgenomen bestand kan zijn (omdat het de functie opnemen definieert)
  • Geef voldoende informatie op als er iets misgaat (bijv. Het bestand dat werd opgenomen, de opgetreden fout, ...)
  • Neem een bestand slechts één keer op om te voorkomen dat loops worden opgenomen.
' *************************************************************************************************
'! 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

Inclusief bestanden

Gebruik een voering om een bestand in een ander bestand op te nemen:

IncludeFile "myOtherFile.vbs"

Wereldwijde initialisatie

Voordat we de methode includeFile gebruiken, moeten we:

  • Verklaar std_internal_LibFiles wereldwijd
  • Initialiseer het met een nieuw woordenboek
Dim std_internal_LibFiles
Set std_internal_LibFiles = CreateObject("Scripting.Dictionary")


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow