疑問解決(VBScript)

2007/3/31

Windows標準のスクリプト言語をさわってみました!

・VBScriptとは
 VBScriptとはWindows標準のスクリプト言語です。
 言語の見栄えがVBライクのため、このような名前になったんだと思います。

 用途としては、下記があります。
用途 解説
Windows ローカルスクリプト 従来のバッチファイルの代用
ActiveXオートメーションサーバを用意に扱うことが可能です。
WEBブラウザスクリプト JavaScriptの様に使えますが、対応ブラウザがIEだけだったため
軍配はJavaScriptに上がりました。
WEBIサーバサイドスクリプト IIS ASPのサーバサイドスクリプトとして動作します。
ただし、ASPからASP.NETへの移行によって、
言語もVBScriptから、VB.NETおよびC#になりました。

 また、COMラッパーが用意されている .Net Frameworkクラスについては、
 COMを経由して.Netを利用可能です。
 (ただし、COM なので引数付きコンストラクタと静的メソッドが使えません。 )

 VBScriptのランゲージリファレンス(解説)はリンクから参照してください。
・開発環境
 基本的には、エディタで十分だと思います。
 Wzエディタ、秀丸エディタ等を使用してください。
・実行
 エディタを開いて、スクリプトを書きます。
 保存する際、使用言語にあわせて拡張子を決定します。
 ファイルをダブルクリックするとWSHが実行されます。

 コマンドプロンプト上から実行したい場合、cscript から実行すると標準出力が使えて便利です。
 (標準出力とは、コマンドプロンプトへの出力の事です。)
 
cscript スクリプトファイル名
・サンプル1(HelloWorld)
 プログラミングの基本(?)HelloWorldです。
 
' 「'」以降から行末まではコメントになり、WSHはこの部分を無視します。
MsgBox "Hello World!" ’メッセージボックスを表示

 たった これだけです。
・サンプル2(アプリケーションの起動)
 ノートパッドを起動します。
 
' CreateObject 指定ID(今回はWScript.Shell)のオブジェクトを生成します。
' Set 指定変数にオブジェクトを設定します。
' 今回は、変数”objShell ”に新しく生成したWshShellクラスオブジェクトを設定します。

Set objShell = WScript.CreateObject("WScript.Shell")

' WshShellクラス Runメソッド 指定アプリを実行します。(今回はノートパッド)
objShell.Run "notepad.exe"

 WScriptはいつ生成されるのかと疑問に思われる方も居るかもしれませんが、
 WScriptは暗黙的に生成されるため、常に使用可能です。
 

・サンプル3(コマンドの実行)

 コマンドラインの実行はRunメソッドを使用します。
 
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
 
引数 解説
object WshShell オブジェクト
strCommand 実行するコマンド ラインを示す文字列値です。
引数も含めます。
intWindowStyle プログラムのウィンドウの外観を示す整数値
省略可能
bWaitOnReturn プログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値
bWaitOnReturn に TRUE を指定すると、プログラムの実行が終了するまでスクリプトの実行は中断される
Run メソッドはアプリケーションから返される任意のエラー コードを返します。
bWaitOnReturn に FALSE を指定すると、プログラムが開始すると Run メソッドは即座に復帰します。
自動的に 0 を返します。(エラーコードではない)
省略可能

・サンプル4(引数の取得)

 引数とは、プログラム実行時にプログラムに渡すオプションです。
 実行する際に、プログラムの後ろにスペースと引数をつけて渡します。
 引数には、名前付きと名前無しがありますが、
 今回は名前無しを解説します。
 
プログラム名 オプション1 オプション2
 VBA側では、WScript.Arguments.Unnamedオブジェクトを使用します。
 (名前付きの場合は、Namedオブジェクトを使用します。)
 
Set objArgs=WScript.Arguments.Unnamed
' 名前なし引数を順番に取得する
TextBody = ""
For i=0 To objArgs.Count-1
  TextBody = TextBody & objArgs.Item(i)
Next
・参考

[定数]
●ShellSpecialFolderConstants
 注:VBScriptでは値で指定しなければならない

 
定数 意味
ssfDESKTOP 0 デスクトップ
  1 Internet Explorer
ssfPROGRAMS 2 プログラム
ssfCONTROLS 3 コントロールパネル
ssfPRINTERS 4 プリンタ
ssfPERSONAL 5 マイドキュメント
ssfFAVORITES 6 お気に入り
ssfSTARTUP 7 スタートアップ
ssfRECENT 8 最近使ったファイル
ssfSENDTO 9 送る
ssfBITBUCKET 10 ごみ箱
ssfSTARTMENU 11 スタートメニュー
ssfDESKTOPDIRECTORY 16 デスクトップ(フォルダ)
ssfDRIVES 17 マイコンピュータ
ssfNETWORK 18 ネットワークコンピュータ
ssfNETHOOD 19 NetHood
ssfFONTS 20 フォント
ssfTEMPLATES 21 テンプレート


[コマンドプロンプトの特別引数オプション]
修飾子 機能・用途
%~1 全ての引用句(")を削除して%1を展開する。
%~f1 %1を完全修飾パス名に展開する。
%~d1 %1をドライブ名だけに展開する。
%~p1 %1をパスだけに展開する。
%~n1 %1をファイル名だけに展開する。
%~x1 %1をファイル拡張子だけに展開する。
%~s1 展開されたパスはMS-DOSの「8.3形式」でも短い名前だけを含む。
%~a1 %1をファイル属性に展開する。
%~t1 %1をファイルの日付・時刻に展開する。
%~z1 %1をファイルのサイズに展開する。
%~$PATH:1 PATH環境に指定されているディレクトリを検索し、最初に見つかった完全修飾名に%1を展開する。環境変数名が定義されていない場合、また検索してもファイルが見つからなかった場合は、この修飾子を指定すると空の文字列に展開する。

さらに情報が欲しい方は、Google検索で  
Google
・TOPへ戻る

メールはこちらに