只有在特定的IF语句有效时才能读取文件的下一行吗?

时间:2013-03-11 12:12:45

标签: batch-file line counter increment next

我想知道,如果某个IF语句在其中有效,是否可以跳过在FOR / F循环中读取一行? 例如:

FOR /F "tokens=* delims=" %%j in (exclusions.txt) do ( 
IF %SomethingIDeclaredBefore%==%%j (jump to the next line of the text file) else (echo not equal)

我想增加%%j.

是不可能的

2 个答案:

答案 0 :(得分:2)

怎么样

for /l %%C in (1,1,254) do (
 findstr /b /e "172.24.104.%%C" exclusions.txt >nul
 if errorlevel 1 (echo shutdown) else (echo skip)
)

答案 1 :(得分:1)

你走在正确的轨道上。 只需执行检查if not %SomethingIDeclaredBefore%==%%j的if语句。这样只会在循环中处理与语句不匹配的行,实质上是跳过该行。

FOR /F "tokens=* delims=" %%j in (exclusions.txt) do ( 
    IF NOT %SomethingIDeclaredBefore%==%%j (echo not equal)
)

更新

如果我从您的评论中了解您的情况,那么这应该是您想要的。要检查每个地址的排除项,完整排除循环必须在地址循环内。

SETLOCAL EnableExtensions EnableDelayedExpansion
FOR /L %%C IN (1,1,254) DO (
    SET "Found=false"
    FOR /F "tokens=* delims=" %%J IN (exclusions.txt) DO (
        IF "172.24.104.%%C"=="%%J" SET "Found=true"
    )
    IF "!Found!"=="true" ( ECHO Skip ) ELSE ( ECHO Shutdown )
)
ENDLOCAL