File 打开URL后逐个关闭URL(从文本文件读取URL,循环)

File 打开URL后逐个关闭URL(从文本文件读取URL,循环),file,loops,url,text,vbscript,File,Loops,Url,Text,Vbscript,我有一个VBScript,它在文本文件中循环URL并打开它们。它每60秒打开一个。我想在大约15分钟后关闭每一个。我试着在循环之前退出,但它杀死了所有人。我只想在第一页打开15分钟后关闭它,然后是下一页,等等。基本上,当每一页打开时,每一页都开始15分钟倒计时关闭。我怎样才能做到这一点 Set IE = createobject("internetexplorer.application") IE.Visible = True navflags = 1 Set objShell = Create

我有一个VBScript,它在文本文件中循环URL并打开它们。它每60秒打开一个。我想在大约15分钟后关闭每一个。我试着在循环之前退出,但它杀死了所有人。我只想在第一页打开15分钟后关闭它,然后是下一页,等等。基本上,当每一页打开时,每一页都开始15分钟倒计时关闭。我怎样才能做到这一点

Set IE = createobject("internetexplorer.application")
IE.Visible = True
navflags = 1
Set objShell = CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell") 
Set fso = CreateObject("Scripting.FileSystemObject")

URLFilename = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) & "\URLsClean.txt"
Set URLFile = fso.OpenTextFile(URLFilename)

do while not URLFile.AtEndOfStream
fName = URLFile.ReadLine()

ie.navigate2 fName,navflags

wscript.sleep 60000

loop

您需要使用
ShellWindows
集合来迭代打开的Internet Explorer窗口/选项卡,并关闭相应的窗口/选项卡。听起来您需要某种“关闭队列”来维护下一个需要关闭的窗口/URL

下面是一个如何迭代打开的IE窗口/选项卡并使用给定URL关闭的示例:

Dim objWindow

' Iterate all open shell windows...
For Each objWindow In CreateObject("Shell.Application").Windows

    ' Make sure this is an Internet Explorer window/tab...
    If StrComp(objWindow.Name, "Internet Explorer", vbTextCompare) = 0 Then

        ' Is this the URL that's expired?
        If StrComp(objWindow.LocationURL, strUrlExpired, vbTextCompare) = 0 Then

            objWindow.Quit

        End If

    End If

Next

我明白了。当我单独调用它时,这就是我需要的

Set sa = CreateObject("Shell.Application")
Set windows = sa.Windows()

Set fso = CreateObject("Scripting.FileSystemObject")

on error resume next

URLFilename = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) & "\URLsClean.txt"

Set URLFile = fso.OpenTextFile(URLFilename)

do while not URLFile.AtEndOfStream
fName = URLFile.ReadLine()

For Each window In sa.windows

'wscript.echo window.locationurl & " " &  fname

If window.LocationUrl = fname Then
        If UCase(window.locationUrl) = UCase(fname) Then window.Quit()
End If
Next

wscript.sleep 1200000 ' (20 minutes)
loop

这看起来很有希望,但不确定如何将其与我的脚本结合使用。似乎我需要以某种方式循环这个,并将它与文本文件中的每一行进行比较…对,这就是为什么我提到您需要某种队列来跟踪设置为过期的URL。我向您展示了如何根据URL关闭标签(以解决IE完全关闭的问题),但我不确定您计划如何在15分钟后关闭这些标签。超出我当前的技能水平,但我将开始谷歌搜索。谢谢。我想了一个主意-也许这个脚本可以调用另一个同时运行的vbscript,并监视打开的窗口/与url文件进行比较…这可能会起作用。你的问题相当广泛,所以我只是解决了你眼前的问题(即完全关闭而不是单个选项卡/页面)。尝试一下你的想法,如果没有成功,提交一个新的问题和你的最新代码。祝你好运