3

Windows cmd 機能のみを使用する必要があります。検証アクションのためにバッチスクリプトで使用するには、Web サイトから 2 つの変数/文字列が必要です。単純化しすぎないように、この Web サイトにはさらに認証が必要です。

私はこれをどこかで見つけました:

@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

Windows バッチ スクリプトから Web コンテンツを取得するために wget しか使用したことがありません。JScript 経由で XHR を使用するのは素晴らしいアイデアでした。

しかし、あなたが略奪しようとしているスクリプトは、コンテンツを取得するためではなく、Web サーバーが応答しているかどうかを確認することを目的としているようです。

いくつかの変更を加えると、それを使用して 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 に答える