Posts tagged ‘wsh’

IEを起動し、googleを開く例です。


Option Explicit

  Dim OBJ_Shell

  Set OBJ_Shell = CreateObject("Shell.Application")
  OBJ_Shell.Windows.Item.Navigate "<a href="http://www.google.co.jp/">http://www.google.co.jp/</a>"

Scriptのダウンロードは こちら です。


Option Explicit
  Dim OBJ_FSO
  Dim OBJ_Browser
  Dim STR_ProgramName

  Set OBJ_FSO = CreateObject("Scripting.FileSystemObject")

  For Each OBJ_Browser In CreateObject("Shell.Application").Windows

    STR_ProgramName = OBJ_FSO.GetFileName(OBJ_Browser.FullName)
    If LCase(STR_ProgramName) = "iexplore.exe" Then

      WScript.Echo OBJ_Browser.LocationURL

    End If

  Next

Scriptのダウンロードは こちら です。

指定したフォルダのファイル一覧を取得します。再帰処理でサブフォルダ内のファイル名も取得します。


Option Explicit
Private Function GET_FileList(STR_Path)

  Dim OBJ_FSO
  Dim OBJ_Folder
  Dim COL_SubFolder
  Dim COL_File

  Set OBJ_FSO = WScript.CreateObject("Scripting.FileSystemObject")
  Set OBJ_Folder = OBJ_FSO.GetFolder(STR_Path)

  For Each COL_File In OBJ_Folder.Files

    WScript.Echo COL_File.Name

  Next

  For Each COL_SubFolder In OBJ_Folder.SubFolders

    GET_FileList(COL_SubFolder)

  Next

End Function

 Scriptのダウンロードは こちら です。

以前は、UTCタイムフォーマットから”YYYYMMDDHHMMSS”に変換するスクリプトでした。

今度は、逆です。YYYYMMDDやHHMMSSを取得するスクリプトの使用しています。

Option Explicit
  Dim STR_Computer
  Dim OBJ_SWbemServices
  Dim OBJ_TimeZone
  Dim COL_TimeZone
  Dim STR_Bias
  Dim DTMCurrentDate
  Dim DTMTargetDate
  Dim DTMMonth
  Dim DTMDay

  STR_Computer = "."
  Set OBJ_SWbemServices = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & STR_Computer & "\root\cimv2")
  Set COL_TimeZone = OBJ_SWbemServices.ExecQuery("SELECT * FROM Win32_TimeZone")

  For Each OBJ_TimeZone In COL_TimeZone

    STR_Bias = OBJ_TimeZone.Bias

  Next

  DTMTargetDate = Get_YYYYMMDD(0) & Get_HHMMSS(0)
  DTMTargetDate = DTMTargetDate & ".000000"
  DTMTargetDate = DTMTargetDate & CStr(STR_Bias)

  WScript.Echo DTMTargetDate
Private Function Get_YYYYMMDD(ByVal STR_Flag)
  Dim STR_Temp
  Dim STR_YYYYMMDD

  If Not IsNumeric(STR_Flag) Then Exit Function End If

  STR_Temp = Year(Now)
  If Len(STR_Temp) = 2 Then STR_Temp = "20" & STR_Temp End If
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & "/" End If
  STR_YYYYMMDD = STR_Temp

  STR_Temp = Month(Now())
  If Len(STR_Temp) = 1 Then STR_Temp = "0" & STR_Temp End If
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & "/" End If
  STR_YYYYMMDD = STR_YYYYMMDD & STR_Temp

  STR_Temp = Day(Now())
  If Len(STR_Temp) = 1 Then STR_Temp = "0" & STR_Temp End If
  STR_YYYYMMDD = STR_YYYYMMDD & STR_Temp

  GET_YYYYMMDD = STR_YYYYMMDD
End Function

 
Private Function GET_HHMMSS(ByVal STR_Flag)
  Dim STR_Temp
  Dim STR_HHMMSS

  If Not IsNumeric(STR_Flag) Then Exit Function End If

  STR_Temp = Hour(Now())
  If Len(Hour(Now())) = 1 Then STR_Temp = "0" & Hour(Now())
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & ":" End If
  STR_HHMMSS = STR_Temp

  STR_Temp = Minute(Now())
  If Len(Minute(Now())) = 1 Then STR_Temp = "0" & Minute(Now())
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & ":" End If
  STR_HHMMSS = STR_HHMMSS & STR_Temp

  STR_Temp = Second(Now())
  If Len(Second(Now())) = 1 Then STR_Temp = "0" & Second(Now())
  STR_HHMMSS = STR_HHMMSS & STR_Temp

  GET_HHMMSS = STR_HHMMSS
End Function

Scriptのダウンロードは こちら です。

今度は、HHMMDDを取得します。
引数も同様に、1以上の場合は”HH:MM:SS”を、0の場合は”HHMMSS”です。


Private Function GET_HHMMSS(ByVal STR_Flag)
  Dim STR_Temp
  Dim STR_HHMMSS

  If Not IsNumeric(STR_Flag) Then Exit Function End If

  STR_Temp = Hour(Now())
  If Len(Hour(Now())) = 1 Then STR_Temp = "0" & Hour(Now())
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & ":" End If
  STR_HHMMSS = STR_Temp

  STR_Temp = Minute(Now())
  If Len(Minute(Now())) = 1 Then STR_Temp = "0" & Minute(Now())
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & ":" End If
  STR_HHMMSS = STR_HHMMSS & STR_Temp

  STR_Temp = Second(Now())
  If Len(Second(Now())) = 1 Then STR_Temp = "0" & Second(Now())
  STR_HHMMSS = STR_HHMMSS & STR_Temp

  GET_HHMMSS = STR_HHMMSS
End Function

Scriptのダウンロードは こちら です。

WSHのプログラミングで、年月日(YYYYMMDD)や時間(HHMMSS)をとるのって、以外と手間だったりします。
ファイル名やタイムスタンプを表示するときに私は以下の関数を利用しています。
まずは、年月日からです。フラグで1以上の値を渡すと”YYYY/MM/DD”になり、0の場合は、”YYYYMMDD”になります。


Private Function Get_YYYYMMDD(ByVal STR_Flag)
  Dim STR_Temp
  Dim STR_YYYYMMDD

  If Not IsNumeric(STR_Flag) Then Exit Function End If

  STR_Temp = Year(Now)
  If Len(STR_Temp) = 2 Then STR_Temp = "20" & STR_Temp End If
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & "/" End If
  STR_YYYYMMDD = STR_Temp

  STR_Temp = Month(Now())
  If Len(STR_Temp) = 1 Then STR_Temp = "0" & STR_Temp End If
  If STR_Flag >= 1 Then STR_Temp = STR_Temp & "/" End If
  STR_YYYYMMDD = STR_YYYYMMDD & STR_Temp

  STR_Temp = Day(Now())
  If Len(STR_Temp) = 1 Then STR_Temp = "0" & STR_Temp End If
  STR_YYYYMMDD = STR_YYYYMMDD & STR_Temp

  GET_YYYYMMDD = STR_YYYYMMDD
End Function

Scriptのダウンロードは こちら です。

プログラムの中で、UTC(Universal Time Coordinate)を扱うことがあります。

UTCは、こんな↓データで、一目見てもいつなのか分かりにくいです。
“20081011000000.000000+540″

これを”YYYYMMDD HH:MM:SS” 形式に変換するWSHです。
(jscriptだと関数がありますが、vbsだとプログラムで生成するしかないと思います)

Option Explicit
Function ConvertUTCToDate(STR_DateTime)

  ConvertUTCToDate = CDate(Mid(STR_DateTime, 5, 2) & "/" & _
  Mid(STR_DateTime, 7, 2) & "/" & Left(STR_DateTime, 4) & " " & _
  Mid(STR_DateTime, 9, 2) & ":" & _
  Mid(STR_DateTime, 11, 2) & ":" & _
  Mid(STR_DateTime, 13, 2))

End Function

Scriptのダウンロードは こちら です。