- 追加された行はこの色です。
- 削除された行はこの色です。
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]]