| ファイル名拡張子 | .wsf |
|---|---|
| インターネットメディアの種類 | テキスト/xml |
| 開発者 | マイクロソフト |
| フォーマットの種類 | スクリプト |
| コンテナ用 | スクリプト |
Windowsスクリプト ファイル( WSF ) は、 Microsoft Windows Script Hostで使用されるファイル タイプです。これにより、スクリプト言語 JScriptとVBScript を1 つのファイル内に混在させることができます。また、ユーザーがインストールしている場合は、Perl、Object REXX、Python、Kixtartなどの他のスクリプト言語も混在させることができます。これらの種類のスクリプトは、 HTMLと同様の方法で、タグsrcのパラメータを使用して他の多くの外部スクリプトをリンクするためにも使用できます。Windows スクリプト ファイルの拡張子は です。 WSF は、以下に示すように、非常に基本的なXML階層で各スクリプト モジュールを参照し、タグの外側ではそれらの標準に準拠します。タグ内での " " または " "のリテラル使用や同様の問題は、例に示すように、
CDATAを使用することで処理できます。<script>".WSF"<script></script><script><script>
エラー分離
WSF はエラーを分離するのに便利です。モジュール型なので、スクリプト参照が別のスクリプト参照に干渉することはありません。エラーを生成するモジュールと生成しないモジュールがある WSF の例を次に示します。
<?xml version="1.0" ?>
<job id= "部分的に動作します" > <!-- これは動作しません --> <script language= "VBScript" > ' <![CDATA[ WScript . echo 4 / 0 ' ああ、大変! ゼロで割ることはできません... ' ]]> </script> <!-- これは動作します... 間違いなく... --> <script language= "VBScript" > ' <![CDATA[ WScript . echo "Hello, Scripters!" & vbNewline & _
"すばらしい! 動作しました!" ' ]]> </script> </job>
最初のスクリプト モジュールは「ゼロ除算」エラーを生成します。通常、これによりスクリプトはWindows スクリプト ホストで終了しますが、このモジュール方式により、スクリプトは続行され、2 番目のスクリプト モジュールを実行できます。
混合言語サポート
Windows スクリプト ファイルは、Windows Script Hostリファレンスで説明されているように、複数の言語をサポートしています。このファイル形式の機能の 1 つは、一度に複数の言語を使用できることです。つまり、1 つのスクリプト言語で別のスクリプト言語のコードを使用できます。長年のVBScriptユーザーにとって最も印象に残る例は、値の配列に対する組み込みの並べ替え関数がないため、 Microsoft JScriptを使用してVBScriptの並べ替え要求を処理することです。VBScript ユーザーは、独自の並べ替えメソッドを作成することも、ADO ( ActiveX Data Objects ) Recordsetや .NET ( .NET Framework ) ArrayListなどの既存のオブジェクトからメソッドを借用することもできますが、配列を並べ替える最も速い方法は、 JScriptに組み込まれているメソッドを使用することです。これがどのように機能するかの基本的な例を次に示します。
<?xml version="1.0" ?>
<!-- JScript と VBScript の混在 -->
<job id= "SORT-VBScriptWithJScript" > <script language= "JScript" > function SortVBArray ( arrVBArray ) { return arrVBArray . toArray (). sort () ; } </script> <script language= "VBScript" > ' <![CDATA[ '** 最速のソート: VBScript から Jscript のソートを呼び出すmyData = "a,b,c,1,2,3,X,Y,Z,p,d,q" wscript . echo "元の値のリスト: " & vbTab & myData starttime = timer () sortedArray = SortVBArray ( split ( myData , "," )) endtime = timer () jscriptTime = round ( endtime - starttime , 2 ) wscript . echo "JScript は " & jscriptTime & " 秒でソートされました: " & vbTab & sortedArray ' ]]> </script> </job>
出力はASCIIコード シーケンスでソートされ、次のようになります。
元の値のリスト: a、b、c、1、2、3、X、Y、Z、p、d、q
0 秒でソートされた JScript: 1、2、3、X、Y、Z、a、b、c、d、p、q
定数の公開
WSF のもう 1 つの非常に便利な機能は、XML ラッパーをオブジェクト参照またはコントロールにバインドできるため、そのオブジェクトの定数を宣言せずに使用できることです。通常のVBScriptファイルとJScriptファイルでは、定数を使用するには、定数の値を宣言する必要があります ( Windows Script Hostの内部にある定数以外)。次に例を示します。
const adLockBatchOptimistic = 4 MsgBox ""adLockBatchOptimistic"" の値は " & _ adLockBatchOptimistic & " です。" 、vbInformation 、"adLockBatchOptimistic"
オブジェクトのドキュメントで定数の名前のみが参照され、定数の値については参照されていない場合は、統合開発環境の助けを借りて定数が何に相当するかを知る方法がありません。 WSF 参照宣言を使用すると、定数の値を宣言せずに定数を使用できます。 次の例では、ADO ( ActiveX Data Objects ) Recordset内のいくつかの一般的な定数の値を列挙しています。
<?xml version="1.0" ?>
<!-- オブジェクト
参照を使用した WSF の例 この非常に形式的な例に関する注記:
CDATA は、XML パーサーが
スクリプトの内容内の特殊文字を無視できるようにするために使用されます。CDATA の
開始と終了は、コメントにして VBScript からマスクする必要があります
。
-->
<package>
<job id= "EnumerateConstantsADO" > <reference object= "ADODB.Recordset" /> <script language= "VBScript" > ' <![CDATA[ dim title , str , i ctecArray = Array ( "adOpenUnspecified" , "adOpenForwardOnly" , _
"adOpenKeyset" , "adOpenDynamic" , "adOpenStatic" ) title = "ADO Recordset Values for Constants" str = title & vbNewLine & vbNewLine str = str & "*CursorTypeEnum Constants*" & vbNewLine For i = 0 to ubound ( ctecArray ) str = str & Eval ( ctecArray ( i )) & vbTab & ctecArray ( i ) & vbNewLine Next str = str & vbNewLine str = str & "*LockTypeEnum定数*" & vbNewLine ltecArray = Array ( "adLockUnspecified" 、"adLockReadOnly" 、 _
"adLockPessimistic" 、"adLockOptimistic" 、_
"adLockBatchOptimistic" ) For i = 0 to ubound ( ltecArray ) str = str & Eval ( ltecArray ( i )) & vbTab & ltecArray ( i ) & vbNewLine Next MsgBox str , vbInformation , Title ' ]]>
</スクリプト>
</ジョブ> </パッケージ>
".WSF"拡張子が などのファイルから上記のスクリプトを実行すると"EnumerateConstantsADO.wsf"、次のような結果が生成されます。
定数の ADO レコードセット値
*CursorTypeEnum 定数*
-1 adOpenUnspecified
0 adOpenForwardOnly
1 adOpenKeyset
2 adOpenDynamic
3 adOpenStatic
*LockTypeEnum 定数*
-1 adLockUnspecified
1 adLockReadOnly
2 adLockPessimistic
3 adLockOptimistic
4 adLockBatchOptimistic
さらに、オブジェクト参照を使用して定数を公開すると、スクリプトの記述が標準のプログラミング言語で記述するのと似たものになります。実際、VBScript で記述されたサンプル スクリプトの内容は、Visual Basicプログラムにコンパイルされ、そのプログラムが ADODB への同じ参照を使用する限り、同じように実行されます。
参照
外部リンク
- Windows スクリプト ファイルの使用 - Microsoft のWeb サイトのページのWayBack Machine のアーカイブから
- スクリプト センターで利用可能なスクリプト言語 - Microsoft のWeb サイトのページのWayBack Machine のアーカイブから
