Windows2000以降はWSH(Windows Scripting Host)が標準で備わっており、特別な準備をしなくともVBScript、JScriptが使える。ファイルのコピーだとかの基本的なシェルの機能は勿論、IDispatchを備えるオブジェクトならなんでも手軽に操作することができる。 -[[WSH For Office2000:http://homepage3.nifty.com/aya_js/office2k/outlook1.htm]] *Windows Script File [#l250db57] XMLで強烈に柔軟性を持たせたもの。他ファイルのインクルードはおろか、複数のスクリプトエンジンの同居もできてしまう。[[「Windows スクリプト ファイル (.wsf) を使用する」:http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsAdvantagesOfWs.asp]]からの抜粋だが <job id="IncludeExample"> <script language="JScript" src="FSO.JS"/> <script language="VBScript"> ' C ドライブの空き領域を取得します。 s = GetFreeSpace("c:") WScript.Echo s </Script> </job> などとできるわけである。凝りすぎ? -[[Windows Scripting Host 2.0:http://homepage3.nifty.com/aya_js/wsh/wsh2.htm]] *VBScript [#w2840068] **利点 [#df43cb0f] -InputBox関数が標準で使え、パラメータのインタラクティブな入力が容易 -人口と作品が多い? **link [#l0eb2992] -[[VBScript チュートリアル:http://tryasp.winscom.co.jp/document/vbscript/vbstutor.htm]] -[[システム管理を自動化するVBScriptの典型的な4つのエラーと解決法:http://itpro.nikkeibp.co.jp/article/Windows/20060201/228370/?ST=win&P=1]] -[[[VBScript Tips]:http://www.whitire.com/vbs/index.html]] **memo [#t25ce704] ***雑多 [#v7eed96e] 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" ' 「"」のエスケープはバックスラッシュでなく連打で行う ***ファイルIO [#lb4f6138] ほとんど[[[VBScript Tips]:http://www.whitire.com/vbs/index.html]]の引用。単純には(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 **作品 [#pf46f0a9] ***ショートカット作成 [#kae0c0a9] 引数で指定されたフォルダへのショートカットを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 *JScript [#a2f4b483] **利点 [#w5557d2e] -文法がC++に近いので、経験がある者にとっては記述しやすい **link [#w20ccc6e] -[[fooling around with JScript:http://www.imasy.org/~hir/hir/tech/js.html]] -[[JScript - Dynamic Scripting:http://www.interq.or.jp/student/exeal/dss/ref/jscript/top.html]] -[[WSH入門:0章 JScript概要:http://www.h6.dion.ne.jp/~binary/wsh/wsh0.htm]]