为什么我的脚本在没有等待用户关闭第一个记事本的情况下启动两个记事本实例?我希望我的脚本打开一个文本文件,而不是在打开下一个记事本之前等待关闭记事本。
set service = GetObject ("winmgmts:")
Dim ArchiveList
Dim ExportTool
Dim running
ExportTool = "notepad.exe "
ArchiveList = Array("A.txt","b.txt")
For Each element In ArchiveList
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run(ExportTool & element)
running = true
WScript.Sleep 3000
Do while running
running = false
for each Process in Service.InstancesOf ("Win32_Process")
If Process.Name = ExportTool then
running = true
End If
next
Loop
MsgBox "Hallo Erdling", VBOKOnly, "Muhaha"
' not running
Next
我不明白为什么这不起作用。
答案 0 :(得分:1)
running
永远不会被True
循环设置为For Each Process
,因为由于额外的空间,将无法在服务列表中找到ExportTool
值。
删除空格并将其添加到连接ExportTool
和element
值的位置:
set service = GetObject ("winmgmts:")
Dim ArchiveList
Dim ExportTool
Dim running
ExportTool = "notepad.exe" ' remove trailing space
ArchiveList = Array("A.txt","b.txt")
For Each element In ArchiveList
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run(ExportTool & " " & element) ' add space
running = true
WScript.Sleep 3000
Do while running
running = false
for each Process in Service.InstancesOf ("Win32_Process")
If Process.Name = ExportTool then
running = true
End If
next
Loop
MsgBox "Hallo Erdling", VBOKOnly, "Muhaha"
' not running
Next
现在应该工作。
答案 1 :(得分:-1)
由于
ArchiveList = Array("A.txt","b.txt")
创建一个包含两个元素的数组,以便循环以
开头For Each element In ArchiveList
将运行element =“A.txt”和element =“B.txt”和
objShell.Run(ExportTool & element)
将为每个文本文件运行.Run Notepad.exe。