这比我想象的要困难得多(也比它应该的要困难得多)。
我试过Cygwin+curl,但无法运行(Cygwin永远找不到curl.exe,但我确实做了一个包检查,它在那里)。
我试过Windows上的curl,使用命令提示符,它可以工作。但是我有相当多的url要检查,单独做它们并不节省时间。我不知道如何告诉curl,通过cmd提示符,使用一个文件(因为没有"xargs"),就像这里提到的。
我也试过使用PowerShell,但这也有问题。当我尝试遵循选项1时
我得到一个错误,当我尝试运行$xHTTP.open("GET",$url,$false)
:
异常调用"open",参数为"3":"未指定错误(Exception from HRESULT: 0x80004005 (E_FAIL))"
同样在PowerShell中,我完全不知道如何让它使用包含url的文件。我对PS的了解非常非常有限(不存在)。
这里最好是弄清楚如何让命令提示符/curl使用文件,但是我不能弄清楚。
在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]...}
...
使用try/catch处理404错误,例如:
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 - $_"}} >
$homeDesktopfoo.txt