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