Windows2000以降はWSH(Windows Scripting Host)が標準で備わっており、特別な準備をしなくともVBScript、JScriptが使える。ファイルのコピーだとかの基本的なシェルの機能は勿論、IDispatchを備えるオブジェクトならなんでも手軽に操作することができる。
XMLで強烈に柔軟性を持たせたもの。他ファイルのインクルードはおろか、複数のスクリプトエンジンの同居もできてしまう。「Windows スクリプト ファイル (.wsf) を使用する」からの抜粋だが
<job id="IncludeExample"> <script language="JScript" src="FSO.JS"/> <script language="VBScript"> ' C ドライブの空き領域を取得します。 s = GetFreeSpace("c:") WScript.Echo s </Script> </job>
などとできるわけである。凝りすぎ?
Wscript.sleep(1000) ' 1000[ms] 待つ WScript.Quit ' やめる msgbox("hello" & "world") ' メッセージボックスを表示 inputbox("type the param") ' パラメータ入力可能なダイアログ ' ループ Dim i For i = 1 To 10 ' any Next ' ループをやめるかどうかの確認つき Do msgbox "loop" Loop While vbYes = msgbox("continue?", vbYesNo) msgbox "this is ""quoted"" string" ' 「"」のエスケープはバックスラッシュでなく連打で行う
ほとんど[VBScript Tips]の引用。単純には(Closeは要らんかな?)
Dim objFSO, objFile Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("test.txt", 2, True) objFile.Write("Hello" & vbCrLf) objFile.Close
で、真面目にやるなら
Dim objFSO, objFile Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("test.txt", 2, True) If Err.Number = 0 Then objFile.Write("Hello") objFile.Close Else WScript.Echo "file open error: " & Err.Description End If Else WScript.Echo "error: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing
引数で指定されたフォルダへのショートカットをHOMEディレクトリに作成するスクリプト。「送る」フォルダにcreateshortcut.vbsとして配置すれば、右クリックから呼出せて便利だなあと思って作ったが、デスクトップにショートカットを作成するものが既にあり、存在意義が8割がた失われた。でもまあ学習記録として貼っておく。
Option Explicit Dim objWshShell, objShortcut, strHomeDirPath, strTargetDirName, strTargetDirPath Set objWshShell = WScript.CreateObject("WScript.Shell") If 0=WScript.Arguments.Count Then msgbox "no arg" WScript.Quit Else Dim objFileSystem Set objFileSystem = WScript.CreateObject("Scripting.FileSystemObject") strTargetDirPath = WScript.Arguments(0) If objFileSystem.FolderExists(strTargetDirPath) Then strTargetDirName = objFileSystem.GetBaseName(strTargetDirPath) Else msgbox "invalid arg (not a folder)" WScript.Quit End If End If strHomeDirPath = objWshShell.ExpandEnvironmentStrings("%HOME%") Set objShortcut = objWshShell.CreateShortcut(strHomeDirPath & "\" & strTargetDirName & ".lnk") objShortcut.Description = strTargetDirName objShortcut.TargetPath = strTargetDirPath objShortcut.Save