Ein bisschen Problem kann ich nicht lösen.Problem mit Sonderzeichen in Batch
In meinen for/f delims Parametern habe ich ein Sonderzeichen <
und mein Skript merkt es nicht.
Dieses Skript Test-Netzwerk für IT-Anforderungen. Es protokolliert das Netzwerk und die Geschwindigkeit.
set /p IP="IP : "
set /p MS="Millisecond : "
for /f "tokens=1,7 delims==< " %%a in ('ping.exe -w 1000 -n 1 %IP% ^| findstr /i /c:"temps"^|^| echo "Ne Repond Pas"') do (
if "%%b" == "" (
echo "%date% %time:~,8% Ne repond pas" >> log_%IP%.txt
) ELSE (
if %%b GEQ %MS% (
echo "%date% %time:~,8% ms=%%b" >> log_%IP%.txt
timeout /t 1 > NUL
)
)
)
goto loop
Wenn das Ping-Ergebnis < 1ms ist, meldet er in der Datei. Wenn der Ping = 1 ms oder = 2 ms ist, funktioniert es einwandfrei.
Ich versuche mit dem Escape-Zeichen ^
vor <
, aber das hat nicht funktioniert.
Eg
Ping 8.8.8.8: Die Protokolldatei ist perfekt, weil es nicht <
im Ergebnis ist
Ping 127.0.0.1: Die Skript-Protokolle in Datei
Dank
Sie müssen uns einige typischen Ausgangsleitungen zeigen, die „Arbeit“ oder „nicht funktionieren“, da Sie sind offenbar nicht Englisch (und daher das "Ping" -Ausgabeformat kann etwas anders sein). Ich bearbeite einfach deinen Code im Standardformat - ich habe keine Ahnung was das "^ |^| echo ..." ist - bitte erläutern. Haben Sie '%% a' und' %% b' mit einem 'echo' für die Problemzustände angezeigt? – Magoo
@oasisck Was Sie hier tun, um festzustellen, ob der Ping erfolgreich war oder nicht, ist schrecklich. Lesen Sie [diese Antwort] (https://stackoverflow.com/a/46707214/3074564) mit einem Batch-Code für eine sehr ähnliche Aufgabe wie Sie, indem Sie den Exit-Code "ping" verwenden, um zusätzlich zu protokollieren und zu erklären, wie dieser Code funktioniert. – Mofi
Wofür ist% MS% festgelegt? Da '<' ein Trennzeichen ist, kann es nicht in '%% a' oder' %% b' vorkommen; Daher muss das Problem woanders sein ... – aschipfl