2010年07月18日


VBScript でバッチ処理する時の選択肢 : .VBS でやるか .WSF でやるか

.VBS

[長所] : すぐコードを書き始められるので簡単です。
[短所] : 外部のコードを使え無いので、全て一つのテキストに書く必要があります。

.WSF

[長所] : 外部ファイルをローカルやWEBから取り込む事ができます。これは強力です。
     ( さらに、ソース内にテキストデータを持つ事ができます。)
[短所] : フォーマットが決まっているので、雛型が必要です。
     ( 殆ど短所とは言えない内容です。)

それでも、すぐ簡単にテストしたい場合は、.VBS で書く事が多いですが、正式に運用に使うような場合はやはり .WSF にします。

SCRIPT 要素内に VBScript のコードを記述します。SCRIPT 要素には、HTML 上で書くのと同じ src 属性が使えますので、それを使って関数や定義や処理を外部に置いて利用します

以下は、.WSF の簡単な雛型です。

skeleton.wsf
<JOB>
<COMMENT>
********************************************
※ COMMENT 要素内はコメントです
※ WScript.Shell は、良く使う基本的なオブジェクトです
※ Scripting.FileSystemObject はテキストファイル用です
********************************************
</COMMENT>

<OBJECT id="WshShell" progid="WScript.Shell" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />

<SCRIPT language="VBScript">
'*******************************************
' 処理開始
'*******************************************

' ソース内テキストデータの表示
Wscript.Echo RegTrim(GetResource("myTextData"))

' GUI 
if vbCancel = MsgBox( "処理が終了しました   ", vbOKCancel , "サンプル" ) then
	Wscript.Echo "キャンセルされました"
end if

'*******************************************
' 文字列前後の漢字スペースを含むホワイトスペースの削除
'*******************************************
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function
</SCRIPT>

<COMMENT>
********************************************
 ソース内テキストデータ
********************************************
</COMMENT>
<RESOURCE id="myTextData">
<![CDATA[
ここにテキストデータを用意します
]]>
</RESOURCE>

</JOB>

厳密に言うと XML 要素に関してはいろいろあるのですが、説明し出すとよけい解りにくくなります。長年動いていて、問題の出にくい雛型であるというふうに軽い認識でいいと思います。

※ Microsoft のドキュメント見ると、必ず混乱するので無視して下さい。


タグ:wsf WSH 正規表現
posted by at 19:51 | Comment(0) | 基本事項 | このブログの読者になる | 更新情報をチェックする


この記事へのコメント
コメントを書く
お名前:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。