我只需要使用Windows cmd功能。我需要来自网站的两个变量/字符串在batchscript中用于验证它的动作。为了不太简单,这个网站还需要进行身份验证。
我在某个地方找到了这个:
@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)
但我不确定是否有可能以这种方式获取网站内容而不是状态回答,而且我不知道如何实现网站认证。
上面的代码无法正常工作,因为它会因为管道而产生错误,但这似乎更接近我解析我希望的内容的需求。
答案 0 :(得分:7)
我只使用wget从Windows批处理脚本中获取Web内容。通过JScript使用XHR是一个很棒的主意!
但是你试图掠夺的剧本似乎是用来检查网络服务器是否正在响应,而不是用于获取内容。
通过一些修改,您可以使用它来获取网页并执行您需要的任何处理。
@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);