从文本文件中读取域并在浏览器中打开

时间:2015-06-30 17:28:37

标签: internet-explorer powershell vbscript dns

我在文本文件中有大约100多个网页的列表,我必须分析。复制和粘贴可能很忙。

我认为在脚本中运行一个文本文件会很有效,一次打开一个域,在我关闭IE后,它会打开下一个域。

如果可能的话,更新列表并删除访问过的列表,但如果有大量工作,我可以传递一下。

让我们说:

yahoo.com
google.com
microsoft.com

PowerShell 它真的不起作用,因为我只是潜入PowerSshell。

$domain = Get-Content ".\list.txt"

ForEach($element in $domain){
    $url = "$domain"
    $ie = new-object -com "InternetExplorer.Application"
    $ie.Navigate($url)
}

的VBScript 这个 有效,但一次打开所有页面。如果有那么多URL,哪个会崩溃。我怎么能控制它?

Set fso = CreateObject("Scripting.FileSystemObject")
Set listFile = fso.OpenTextFile("list.txt")
Set WshShell = WScript.CreateObject("WScript.Shell") 
Dim fso
do while not listFile.AtEndOfStream fName = listFile.ReadLine()

Return = WshShell.Run("iexplore.exe " &  fName, 1) 
loop

2 个答案:

答案 0 :(得分:1)

注意:已更新,其中包含用于删除已访问过的网址的行,并将IE窗口置于最前面。

这将使用PowerShell:

#VB assembly needed for function to bring IE to front
Add-Type -Assembly "Microsoft.VisualBasic"
$domain = Get-Content "c:\temp\list.txt"

ForEach($url in $domain){

    #Start IE and make it visible
    $ie = new-object -com "InternetExplorer.Application"
    $ie.Visible = $true

    #Bring the IE window to the front
    $ieProc = Get-Process | ? { $_.MainWindowHandle -eq $ie.HWND }
    [Microsoft.VisualBasic.Interaction]::AppActivate($ieProc.Id)

    #Navigate to the URL
    $ie.Navigate($url)

    #Sleep while IE is running
    while($ie.visible){
        start-sleep -s 1
        }

        #Delete the URL from the file
        (type c:\temp\list.txt) -notmatch "^$url$" | out-file c:\temp\list.txt
}

如果要在脚本完成之前停止脚本,请转到PowerShell窗口并关闭它或按Ctrl + C.

答案 1 :(得分:1)

您的VBScript失败,因为您没有正确使用.Run method。必须将第三个参数bWaitOnReturn设置为True。如在

Const csFSpec = "31144615.txt"
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim goWS : Set goWS = CreateObject("WScript.Shell")
Dim tsIn : Set tsIn = goFS.OpenTextFile(csFSpec)
Do Until tsIn.AtEndOfStream
   Dim sLine : sLine = tsIn.ReadLine
   goWS.Run """C:\Program Files\Internet Explorer\IEXPLORE.EXE"" """ & sLine & """", 1, True
Loop
tsIn.Close