2

事实证明,这比我想象的要困难得多(而且可能比它应该的要难)。

我试过 Cygwin+curl,但它无法运行(Cygwin 永远找不到 curl.exe,但我确实做了一个包检查,它就在那里)。

我已经使用命令提示符为 Windows 尝试了 curl,它可以工作。但是我有很多 url 来检查和单独执行它们只是没有时间效率。我不知道如何通过 cmd 提示符告诉 curl 使用此处提到的文件(因为没有“xargs”)。

我也尝试过使用 PowerShell,但这也是有问题的。当我在这里尝试遵循选项 1时

尝试运行时出现错误$xHTTP.open("GET",$url,$false)

使用“3”参数调用“open”的异常:“未指定的错误(来自 HRESULT 的异常:0x80004005 (E_FAIL))”

同样使用 PowerShell,我完全不知道如何让它使用包含 url 的文件。我对 PS 的了解非常有限(如不存在)。

这里最好弄清楚如何让命令提示符/curl 使用文件,但我无法弄清楚。

4

1 回答 1

8

使用 PowerShell V3 有一种更直接的方法:

PS> Get-Content .\urls.txt
http://www.cnn.com
http://www.msn.com

PS> Get-Content urls.txt | Foreach { Invoke-WebRequest -Uri $_ -Method HEAD }

StatusCode        : 200
StatusDescription : OK
Content           :
RawContent        : HTTP/1.1 200 OK
                    Vary: Accept-Encoding
                    Connection: Keep-Alive
                    Cache-Control: max-age=60, private
                    Content-Type: text/html
                    Date: Tue, 08 Jan 2013 20:21:46 GMT
                    Expires: Tue, 08 Jan 2013 20:22:46 GMT...
Forms             : {}
Headers           : {[Vary, Accept-Encoding], [Connection, Keep-Alive], [Cache-Control, max-age=60, private],
                    [Content-Type, text/html]...}
...

要处理 404,请使用 try/catch,例如:

PS> Get-Content urls.txt | 
        Foreach {try {Invoke-WebRequest -Uri $_ -Method HEAD} catch { "Oops - $_"}}

要重定向到文件,这对我有用:

PS> Get-Content urls.txt | 
        Foreach {try {Invoke-WebRequest -Uri $_ -Method HEAD} catch { "Oops - $_"}} > 
        $home\Desktop\foo.txt
于 2013-01-08T20:23:06.140 回答