VBScript : 情報収集


  WScript オブジェクトのプロパティより取得できる情報




  

strInfo = ""
strInfo = strInfo & WScript.FullName & vbCrLf
strInfo = strInfo & WScript.Name & vbCrLf
strInfo = strInfo & WScript.Path & vbCrLf
strInfo = strInfo & WScript.ScriptFullName & vbCrLf
strInfo = strInfo & WScript.ScriptName & vbCrLf
strInfo = strInfo & WScript.Version & vbCrLf

WScript.Echo strInfo
  

  

C:\WINDOWS\system32\cscript.exe
Windows Script Host
C:\WINDOWS\system32
D:\sakura\homepage\enum\vbsguide\sk.vbs
sk.vbs
5.6
  

  システムディレクトリ( system32 ) の取得




【方法1】

必ずしも正しいとはかぎりませんが、ほとんどの場合 WScript.Path で得られるディレクトリを
使用する事ができます。
サンプルスクリプト


【方法2】 ( 正式な方法 )

  

Set obj = CreateObject( "Shell.Application" )
Set objFolder = obj.Namespace( &H25 )
Set objFolderItem = objFolder.Self
strTarget = objFolderItem.Path
MsgBox( strTarget )
  
サンプルスクリプト


【方法3】

WMI が使用できる場合は、他にも情報をたくさん取得できます

  

WScript.Echo WMIGetSystemDirectory( )

' **********************************************************
' システムディレクトリの取得
' **********************************************************
Function WMIGetSystemDirectory( )

	Dim strComputer,objWMIService,colOSes,objOS

	strComputer = "."
	Set objWMIService = GetObject("winmgmts:" _
	 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
	Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
	For Each objOS in colOSes
		WMIGetSystemDirectory = objOS.SystemDirectory
	Next

End Function
  
サンプルスクリプト


【方法4】

Batch Helper を使用する場合はプロパティとして取得できます
( Windows API より取得されます )

  

Set BatchHelper = CreateObject( "Lbox.BatchHelper" )

WScript.Echo BatchHelper.SystemDirectory
  
BatchHelper のページ
プロパティのページ


【方法5】

C でAPI を使って システムディレクトリを printf するブログラム を作って利用する

  

' システムディレクトレリ取得
Set objExec = WshShell.Exec( "GetSytemDir.exe" )
Do While objExec.Status = 0
	WScript.Sleep 100
Loop
strDir = ""
Do While not objExec.StdOut.AtEndOfStream
	strDir = strDir & objExec.StdOut.ReadAll
Loop
  
サンプルスクリプト


  カレントディレクトリとスクリプトが存在するディレクトリ

WshShell オブジェクトより取得できます

  

WScript.Echo WshShell.CurrentDirectory
  

値を設定すると、カレントディレクトリを変更できます。
以下はディレクトリをダイアログで選択し、コマンドラインプロンプトを開きます。
( 選択したディリクトリがカレントとなります )

  

Set objFolder = Shell.BrowseForFolder( 0, "フォルダ選択", 11, 0 )
if objFolder is nothing then
	WScript.Quit
end if
if not objFolder.Self.IsFileSystem then
	WScript.Echo "ファイルシステムではありません"
	WScript.Quit
end if

WshShell.CurrentDirectory = objFolder.Self.Path
WshShell.Run( "cmd.exe" )
  

【重要】
カレントディレクトリは、そのスクリプトをエクスプローラから実行した場合は確実ですが、
他のツールより起動した場合は、そのツールによっては思った結果になりません。、
よって、その スクリプトが存在するディレクトリ を使用したほうが良い場合が多いかもしれません

  

strCurDir = WScript.ScriptFullName
strCurDir = Replace( strCurDir, WScript.ScriptName, "" )
  

上記方法は簡易的ではありますが、ほぼ間違いなく動作します。
しかし、完全な方法は以下のようになります


スクリプトが存在するディレクトリ

  

Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[vbsguide]
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
24/04/20 18:07:15
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube