http 상태를 캡처하고 요청 시간을 정하는 컬

http 상태를 캡처하고 요청 시간을 정하는 컬

파일의 URL을 하나씩 확인하고 결과적으로 모든 요청의 상태 헤더와 실행 시간을 얻으려는 루프가 있습니다. 두 가지 컬 명령이 있습니다.

이것은 헤더 통신(원하지 않음)을 출력하고마지막에 http 상태 코드와 시간 200 - 0,016

curl -w "%{http_code} - %{time_connect}" -I -s http://superuser.com >> test_result.txt

이것은 다음과 일치합니다.헤더의 http 상태 코드그리고 그것을 파일로 인쇄합니다.HTTP/1.1 200 OK

curl -v -I -s http://superuser.com | findstr /c:"HTTP" >> test_result.txt

이 두 명령을 결합하여 다음과 같이 하나의 요청에서 출력을 얻으려면 어떻게 해야 합니까?

HTTP/1.1 200 OK - 0,016

따라서 http 헤더가 있는 줄을 추출하고 파일에 다른 모든 헤더 없이 실행 시간을 추가합니다.

답변1

배치 파일을 사용할 수 있습니다

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem Just to test - Generate a file with URLs
    > ".\urls.txt" (
        echo http://superuser.com
        echo http://www.google.com
    )

    > ".\testResults.txt" (
        for /f "useback delims=" %%u in (".\urls.txt") do (
            set "statusCode="
            echo([%%u]
            for /f "tokens=1,2 delims=#" %%a in ('
                curl -w "##%%{time_connect}##." -I -s --url "%%~u"
                ^| findstr /l /b /c:"HTTP/" /c:"##"
            ') do if "%%b"=="." (
                setlocal enabledelayedexpansion
                echo(    !statusCode! - %%a
                endlocal
            ) else (
                set "statusCode=%%a"
            )
        )
    )

두 개의 중첩 루프만 있으면 됩니다. 첫 번째는 URL 파일을 반복하고 두 번째는 curl명령의 출력을 실행하고 처리합니다.

명령 의 출력은 상태 코드와 연결할 시간이 있는 행만 검색하기 위해 curl필터링됩니다 (출력 문자열은 출력에서 ​​이 데이터를 찾기 위해 수정되었습니다).findstr-w

관련 정보