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 に答える