Ricerca…


introduzione

Quando si esegue VbScript nella shell di Windows, non esiste una funzione incorporata per includere un file, pertanto, per organizzare il codice in file diversi è necessario creare un metodo per farlo.

Osservazioni

Alcune cose da tenere a mente quando si utilizza il metodo IncludeFile(p_Path) :

  • Non vi è alcuna limitazione del tipo di file che può essere incluso, ma il contenuto dei file inclusi deve essere VbScript.
  • Se c'è un errore di sintassi nel file incluso, non otterrai la riga / colonna dell'errore.
  • È necessario definire e inizializzare std_internal_LibFiles prima della prima chiamata a IncludeFile(p_Path)
  • Puoi usare IncludeFile(p_Path) ovunque nel tuo codice, inclusi altri metodi.

Creare un metodo "include file"

Quindi l'obiettivo principale di questa funzione è:

  • Essere autonomo perché deve essere scritto nel file VbScript principale e non può essere in un file incluso (perché definisce la funzione include)
  • Fornisci informazioni sufficienti se qualcosa va storto (ad esempio il file che è stato incluso, l'errore che si è verificato, ...)
  • Includi un file una sola volta per evitare i loop di inclusione.
' *************************************************************************************************
'! 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

Compresi i file

Per includere un file in un altro file, basta usare quello singolo:

IncludeFile "myOtherFile.vbs"

Inizializzazione globale

Prima di utilizzare il metodo IncludeFile, è necessario:

  • Dichiara std_internal_LibFiles livello globale
  • Inizializza con un nuovo dizionario
Dim std_internal_LibFiles
Set std_internal_LibFiles = CreateObject("Scripting.Dictionary")


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow