1

У меня есть цикл, в котором я проверяю URL из файла один за другим и хочу получить заголовок статуса и время выполнения каждого запроса в качестве результата. У меня есть две команды curl:

Этот выводит заголовок сообщения (не хотел) и в конце код состояния 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 ответ1

2

Вы можете использовать командный файл

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

Просто две вложенные петли. Первая перебирает файл URLs, а вторая выполняет и обрабатывает вывод команды curl .

Выходные данные команды curl фильтруются с помощью findstr для извлечения только строк с кодом состояния и временем подключения (выходная строка в -w была изменена, чтобы найти эти данные в выходных данных)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .