Windows スクリプト ファイル (.wsf) を使用する

Windows スクリプト (*.wsf) ファイルは、XML (Extensible Markup Language) コードを含むテキスト ドキュメントです。Windows スクリプト ファイルでは、スクリプトの柔軟性を向上するいくつかの機能がサポートされています。Windows スクリプト ファイルはエンジンに依存しないので、Windows スクリプト互換の任意のスクリプト エンジンで作成したスクリプトを Windows スクリプト ファイルに含めることができます。Windows スクリプト ファイルは、一種のコンテナとして機能します。

.wsf ファイルを使用してスクリプトを作成すると、次のような機能を利用できます。

.wsf ファイルでサポートされている機能 利点
インクルード ステートメント VBScript ファイルまたは JScript ファイルに記述されている関数を Windows Script Host プロジェクトに取り込むことができます。
複数のエンジン 同じファイル内で複数のスクリプト言語を使用できます。
タイプ ライブラリ コードに定数を追加できます。
ツール 任意の XML エディタでファイルを編集できます。
複数のジョブ 1 つのファイルに複数のジョブを記述できるので、すべてのコードを 1 か所に保存できます。

インクルード ステートメント

以前に作成した Windows Script Host プロジェクトに .js ファイルおよび .vbs ファイルが含まれている場合は、.wsf ファイルを経由して、それらを Windows Script Host で使用することができます。関数のライブラリを 1 つの .wsf ファイルにカプセル化すれば、ほかの複数の .wsf ファイルからそれらの関数を使用できます。

次の例では、.wsf ファイルに JScript ファイル (fso.js) をインクルードしており、さらに、インクルード ファイル内の関数 (GetFreeSpace) を呼び出す VBScript 関数をインクルードしています。ここでは、fso.js の内容も示しておきます。

<job id="IncludeExample">
   <script language="JScript" src="FSO.JS"/>
   <script language="VBScript">
      ' C ドライブの空き領域を取得します。
      s = GetFreeSpace("c:")
      WScript.Echo s
   </Script>
</job>

fso.js ファイルには、次のコードが記述されています。

function GetFreeSpace(drvPath) {
   var fs, d, s;
   fs = new ActiveXObject("Scripting.FileSystemObject");
   d = fs.GetDrive(fs.GetDriveName(drvPath));
   s = "Drive " + drvPath + " - " ;
   s += d.VolumeName;
   s += " Free Space: " + d.FreeSpace/1024 + " Kbytes";
   return s;
} 

複数エンジンのサポート

1 つのスクリプト言語だけではニーズを完全に満たせないことがあります。このため、Windows Script Host では、単一の .wsf ファイル内で複数の言語を組み合わせて使用できるようになっています。次の例は、VBScript コードと PerlScript コードの両方が含まれている .wsf ファイルを示しています。

<job id="PERLandVBS">
   <script language="PerlScript">
      sub PerlHello {
         my $str = @_[0];
         $WScript->Echo($str);
      }
   </script>

   <script language="VBScript">
      WScript.Echo "Hello from VBScript"
      PerlHello "Hello from PERLScript"
   </script>
</job>

タイプ ライブラリのサポート

ここでは、Microsoft Visual Basic 5.0 で作成した "MyComponent" という名前のタイプ ライブラリを使用する例を示します。"MyComponent" では、定数 MyError を次のステートメントで定義しています。

Public Const MyError = "You are not using MyComponent correctly"

このタイプ ライブラリは、mycomponent.lib ファイルとして実装されており、C:\MyComponent にインストールされます。

<job id="IncludeExample">
   <reference progid="MyComponent.MyClass">
   <script language="VBScript">
      Dim MyVar
      Set MyVar = CreateObject("MyComponent.MyClass")
      Currentreturn = MyVar.MyMethod
      If Currentreturn = False then
         WScript.Echo MyError
      End If
   </script>
</job>

ツールのサポート

.wsf ファイルは XML 形式なので、XML をサポートしている任意のエディタで .wsf ファイルを編集できます。これには、メモ帳などのテキスト エディタが含まれます。

複数のジョブのサポート

個々のスクリプトを別々のファイルに保存する必要はありません。すべてのスクリプトを単一の .wsf ファイルに含め、それらを複数のジョブに分割することができます。こうして定義したジョブは、次の例のような構文を通じて個別に実行できます。ここで、"MyFirstJob" は MyScripts.wsf ファイルに含まれているジョブの名前です。

CScript //Job:MyFirstJob MyScripts.wsf