46

VBScript には、関数の共通ファイルを含める方法がないようです。

これを達成する方法はありますか?

4

8 に答える 8

60

次のように、他のファイルを含める各ファイルに (比較的) 小さな関数を作成できます。

sub includeFile (fSpec)
    dim fileSys, file, fileData
    set fileSys = createObject ("Scripting.FileSystemObject")
    set file = fileSys.openTextFile (fSpec)
    fileData = file.readAll ()
    file.close
    executeGlobal fileData
    set file = nothing
    set fileSys = nothing
end sub

そしてそれを使用して特定のファイルを含めます-これらはインラインであるかのように実行されます。

includeFile "commonapi.vbi"
includeFile "dbcalls.vbi"

基本的に、ファイルを開き、内容全体を文字列に読み取り、その文字列を実行します。この種のものは通常、プログラムの開始時に一度行われ、それを含む問題がある場合は失敗したいので、I/O 呼び出しにエラー処理はありません。


includeFile関数は次のように圧縮できることに注意してください。

Sub includeFile(fSpec)
    With CreateObject("Scripting.FileSystemObject")
       executeGlobal .openTextFile(fSpec).readAll()
    End With
End Sub

または(長い行に反対しない場合):

Sub includeFile(fSpec)
    executeGlobal CreateObject("Scripting.FileSystemObject").openTextFile(fSpec).readAll()
End Sub
于 2008-11-25T02:23:43.913 に答える
51

「Windows Script Host」フレームワーク (そう呼びたい場合) は、通常の vbs ファイルに機能を追加する XML ラッパー ドキュメントを提供します。その 1 つは、VBscript と Jscript の両方の外部スクリプト ファイルを含める機能です。私はそれについて深く掘り下げたことはありませんが、あなたがやりたいことはできると思います。 http://msdn.microsoft.com/en-us/library/15x4407c(VS.85).aspx

JavaScript、VBScript、または他の WScript スクリプト言語のモジュールを含めることができます。

WSF ファイルの例:

<job id="IncludeExample">
   <script language="JavaScript" src="sprintf.js"/>
   <script language="VBScript" src="logging.vbs"/>
   <script language="VBScript" src="iis-queryScriptMaps.vbs"/>
</job>

上記のファイルの名前が「iis-scriptmaps.wsf」の場合、cscript.exe を使用して次のように実行します。

cscript.exe  iis-scriptmaps.wsf
于 2008-11-25T06:18:46.823 に答える
19

これが古いスレッドであることは知っていますが、とにかく回答を投稿して、他の人が「試行錯誤」によって VBS および WSF ファイルについて学んだことを学ぶことができるようにします。

したがって、他の言語と同じ機能を持たせるには、1 つの WSF ファイルを作成し、そこにメイン プログラムを含むすべての VBS ライブラリを含めることができます。

このようなもの :

<job id="MainProg">
  <script language="VBScript" src="Constants.vbs"/>
  <script language="VBScript" src="FileFunctions.vbs"/>
  <script language="VBScript" src="SendMail.vbs"/>
  <script language="VBScript" src="LoggingFunctions.vbs"/>
  <script language="VBScript" src="MainProgram.vbs"/>   
  <script language="VBScript">
    ' Here we call the main program
    MainProgram()
  </script>
</job>

Constants.vbs後で使用するすべての定数を収集し、他の VBS ファイルで関数を定義します。メイン プログラム ファイルで、呼び出された をMainProgram.vbs作成し、そこにプログラムを記述します。このサブルーチンでは、他の VBS ファイルで定義されているすべての定数と関数を使用できます。subMainProgram()

例えば ​​:

sub MainProgram()
  ' Local variables
  Dim strMessage, strSendTo, strSubject
  ' OpenFile is a function from FileFunctions.vbs
  strMessage = OpenFile("C:\Msg\message.html")
  strSendTo = "email.address@yourdomain.com"
  strSubject = "Daily report - " & date
  ' SendMessage is a function from SendMail.vbs
  ' cFrom and cServer are constants from Constants.vbs
  SendMessage(cFrom, strSendTo, strSubject, strMessage, cServer)
  ' Logger is a function from LoggingFunctions.vbs
  Logger("Daily report sent - " & now())
end sub

あなたがアイデアを理解してくれることを願っています.

于 2012-09-11T16:37:09.667 に答える
1

この VBScript はローカルで使用されていますか、それとも従来の ASP スタイルで提供されていますか?

従来の ASP の場合は、SSI を使用して実行できます。

<!-- #include virtual="/PathTo/MyFile.vbs" -->
于 2008-11-25T02:35:11.393 に答える
1

ExecuteGlobal 関数を使用して、グローバル名前空間で任意の VBS コードを実行できます。例はここにあります: http://www.source-code.biz/snippets/vbscript/5.htm

于 2009-07-15T04:50:20.887 に答える
0

IIS 5 以降では、ASP ファイルから他のファイルを含めるためのscriptタグも使用できます。(あなたの VBScript は ASP ページですか、それとも Windows スクリプトですか?) 以下に例を示します。

<script language="VBScript" runat="server" src="include.asp"></script>

動作とルールは、サーバー側のインクルードとは少し異なります。注: 従来の ASP のこの構文を実際に使用したことはありません。

于 2008-11-26T05:18:19.457 に答える
0

cscript で WSF スクリプト タグを確実に使用できます。

<script language="VBScript" src="ADOVBS.INC"/>

ADODB アクセスに ADOVBS.inc を使用する場合は、必ず削除してください。

<% %>

ADOVBS.INC のタグ。

于 2010-02-23T22:37:22.303 に答える