1

我想知道,如果某个 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.

4

2 回答 2

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)
)
于 2013-03-11T14:18:22.447 回答
1

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

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
于 2013-03-11T12:39:50.847 回答