Некоторые части кода в пакетных файлах не выполняются
У меня проблема в этом командном файле:
@echo off
setlocal enableextensions EnableDelayedExpansion
for /f "tokens=*" %%l in (input1.txt) do (
ping %%l> "Result.txt"
set "var=HI"
set "var1=hi"
set "var2=1";
FIND /c "Destination host unreachable." Result.txt && ( set "var2=2") || ( echo HI)
FIND /c "Request timed out." Result.txt && ( set "var2=2" ) || (echo HI)
if "!var2!" EQU "2" (echo %%l>>"failure.txt")
# This block doesn't work
if "!var2!" EQU "1" (
for /f "tokens=*" %%i in (Result.txt) do ( set var=%%i)
for /f "tokens=9" %%j in ("%var%") do (set var1=%%j)
set var1="!var1:~0,-2!"
if "!var1!" LSS "1000" (echo %%l >> "success.txt") ELSE (echo %%l >>"timeout.txt")
)
)
endlocal
Приведенный выше код предназначен для проверки связи с массовым списком серверов и перенаправления серверов в текстовые файлы об успешном выполнении или сбое на основе результатов теста. Здесь проблема в коде, помеченном rem
замечание не работает. Кажется, что часть не выполнена. Также var1 не оценивается. Заранее спасибо.
1 ответ
Это даст вам успех или неудачу.
@echo off
for /f "delims=" %%a in (input1.txt) do (
ping %%l >nul
if errorlevel 1 (
>>"failure.txt" echo %%l
) else (
>>"success.txt" echo %%l
)
)
Проблема в вашем коде заключается в том, что вы вынуждены сравнивать строки, используя кавычки "!var1!"
и цифра.
У вас также есть два набора цитат вокруг !var1!