Ich habe eine Schleife, in der ich URLs einzeln aus einer Datei überprüfe und als Ergebnis den Statusheader und die Ausführungszeit jeder Anfrage erhalten möchte. Ich habe zwei Curl-Befehle:
Dieser gibt den Header Kommunikation (nicht erwünscht) aus undam Ende der http Statuscode und die Uhrzeit 200 - 0,016
curl -w "%{http_code} - %{time_connect}" -I -s http://superuser.com >> test_result.txt
Dieser bekommt die Zeile mit demhttp-Statuscode aus dem Headerund druckt es in die DateiHTTP/1.1 200 OK
curl -v -I -s http://superuser.com | findstr /c:"HTTP" >> test_result.txt
Wie kann ich diese beiden Befehle kombinieren, um eine Ausgabe aus einer Anfrage zu erhalten, wie diese
HTTP/1.1 200 OK - 0,016
Extrahieren Sie also die Zeile mit dem HTTP-Header und fügen Sie die Ausführungszeit ohne alle anderen Header in der Datei an
Antwort1
Sie können eine Batchdatei verwenden
@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"
)
)
)
Nur zwei verschachtelte Schleifen. Die erste durchläuft die URL-Datei und die zweite führt den curl
Befehl aus und verarbeitet dessen Ausgabe.
Die Ausgabe des curl
Befehls wird mit gefiltert, findstr
um nur die Zeilen mit dem Statuscode und der Verbindungszeit abzurufen (die Ausgabezeichenfolge in -w
wurde geändert, um diese Daten in der Ausgabe zu finden).