Lo script batch ottiene il sito html e analizza il contenuto (senza wget, arricciatura o altra app esterna)

Devo lavorare solo con la funzionalità di Windows Cdd. Ho bisogno di due vars / stringhe da un sito Web da utilizzare nel batchscript per convalidare le azioni con esso. Per non renderlo troppo semplice, questo sito Web richiede inoltre l’autenticazione.

L’ho trovato da qualche parte:

@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) 

Ma non sono sicuro se sia ansible ottenere il contenuto del sito in questo modo, invece di una risposta di stato e più non so come implementare l’autenticazione del sito web su questo.

Il codice sopra riportato non funziona correttamente in quanto genera sempre un errore a causa della pipe, ma questo mi è sembrato più vicino alle mie esigenze di analisi del contenuto che speravo.

Ho sempre usato wget per recuperare il contenuto Web da uno script batch di Windows. Usare un XHR tramite JScript è stata un’idea fantastica!

Ma lo script che stai cercando di saccheggiare sembra destinato a verificare se un server web risponde, non a recuperare contenuti.

Con alcune modifiche, puoi usarlo per recuperare una pagina web e fare qualsiasi elaborazione tu abbia bisogno.

 @if (@[email protected]) @end /* :: fetch.bat  :: 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);