2

順次実行する必要があるいくつかの vbscripts (たとえば 10 個) で満たされたフォルダーがあります。それぞれをクリックして実行するのではなく、このプロセスを自動化したいと考えています。以下は、そのフォルダー内の各 vbscript を 1 つずつ実行する master.vbs スクリプトです。

strComputer = "."

Set objFSO = CreateObject("Scripting.FileSystemObject")
currentdirectory = objFSO.GetAbsolutePathName(".")

filedirectory = currentdirectory 

Set objFolder = objFSO.GetFolder(filedirectory)
Dim filestring

Set colFiles = objFolder.Files
For Each objFile in colFiles
    'Wscript.Echo objFile.Name
    filestring = filestring & objFile.Name & ","
Next

'filestring = filestring.Trim().Substring(0, filestring.Length - 1)
filestring = Left(filestring,Len(filestring)-1)


Dim files 
 files = Split(filestring,",")


For Each f In files
'WScript.Echo f

chk = Split(f,".")
If chk(UBound(chk)) = "vbs" then


pat = filedirectory & "\" & f
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
proc = "cmd.exe /c"& Chr(32) &"cscript.exe " & Chr(32) & chr(34) & pat & Chr(34) 
objWMIService.Create proc , null, null, intProcessID

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colMonitoredProcesses = objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")

Do Until i = 1
    Set objLatestProcess = colMonitoredProcesses.NextEvent
    If objLatestProcess.TargetInstance.ProcessID = intProcessID Then
        i = 1
    End If
Loop

'Wscript.Echo "Process has been terminated."
End If
Next

ここでの問題は、プロセス名がすべてのスクリプト (cscript) で同じになるため、スクリプトが完全に実行されていることです。別のプロセスを開始する前にプロセスが終了するのを待ちません。

私のコードには微調整が必​​要であることは理解していますが、どうすればよいかわかりません。ここで私が間違っていることを誰かが指摘できますか?..

4

1 に答える 1