3

我只需要使用 windows cmd 功能。我需要来自网站的两个变量/字符串在批处理脚本中用于验证操作。为了不让它太简单,这个网站还需要认证。

我在某处发现了这个:

@set @x=0 /*
:: ChkHTTP.cmd
@echo off
setlocal
set "URL=http://www.google.com"
cscript /nologo /e:jscript "%~f0" %URL% | find "200" > nul
if %ErrorLevel% EQU 0 (
echo Web server ok % Put your code here %
) else (
echo Web server error reported
)
goto :EOF

JScript */
var x=new ActiveXObject("Microsoft.XMLHTTP");
x.open("GET",WSH.Arguments(0));x.send();
while (x.ReadyState!=4) {WSH.Sleep(50)};
WSH.Echo(x.status)

但是我不确定是否也可以通过这种方式获取网站内容而不是状态答案,而且我越不知道如何对此实施网站身份验证。

上面的代码不能正常工作,因为它总是会因为管道而产生错误,但这似乎更接近我解析我希望的内容的需要。

4

1 回答 1

7

我只使用过 wget 从 Windows 批处理脚本中获取 Web 内容。通过 JScript 使用 XHR 是一个绝妙的主意!

但是您试图掠夺的脚本似乎是用于检查 Web 服务器是否响应,而不是用于获取内容。

通过一些修改,您可以使用它来获取网页并执行您需要的任何处理。

@if (@a==@b) @end /*

:: fetch.bat <url>
:: fetch a web page

@echo off
setlocal
if "%~1"=="" goto usage
echo "%~1" | findstr /i "https*://" >NUL || goto usage

set "URL=%~1"
for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0" "%URL%"') do (
    rem process the HTML line-by-line
    echo(%%I
)
goto :EOF

:usage
echo Usage: %~nx0 URL
echo     for example: %~nx0 http://www.google.com/
echo;
echo The URL must be fully qualified, including the http:// or https://
goto :EOF

JScript */
var x=new ActiveXObject("Microsoft.XMLHTTP");
x.open("GET",WSH.Arguments(0),true);
x.setRequestHeader('User-Agent','XMLHTTP/1.0');
x.send('');
while (x.readyState!=4) {WSH.Sleep(50)};
WSH.Echo(x.responseText);
于 2013-03-14T20:15:51.047 回答