我想知道,如果某个 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.
我想知道,如果某个 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.
怎么样
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)
)
你在正确的轨道上。只需执行一个 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