2014-02-25 31 views
0

我在这个批处理文件中的一个问题:的代码在批处理文件中的某些部分没有执行

@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没有被评估。提前致谢。

回答

0

这会给你成功或失败。

@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!"和数字报价进行比较。

您还有两套报价围绕