作成 2013.11.25
更新 2013.11.25
VBScript の多重起動を検出する
コード
process-finddup.vbs
Option Explicit
Dim wmiLocator
Dim wmiService
Dim objEnumerator
Dim strQuery

strQuery = "Select * FROM Win32_Process WHERE (Caption = 'wscript.exe' OR " & _
	"Caption = 'cscript.exe') AND CommandLine LIKE '%" & WScript.ScriptName & "%'"
Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")
Set wmiService = wmiLocator.ConnectServer
Set objEnumerator = wmiService.ExecQuery(strQuery)

If objEnumerator.Count > 1 Then
  WScript.Echo "同じスクリプトが実行されています。"
Else
  WScript.Sleep 10000
End If
WScript.Echo "end"
実行結果
同じスクリプトが起動していない場合は 10秒間停止します。
C:\>cscript process-finddup.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

end

同じスクリプトがすでに起動していた場合は即座に終了します。
C:\>cscript process-finddup.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

同じスクリプトが実行されています。
end

タグ: VBScript

©2004-2017 UPKEN IPv4