使用 for 循環列印值,但不使用 findstr 指令過濾某些值

使用 for 循環列印值,但不使用 findstr 指令過濾某些值

我正在使用的批次腳本中有以下程式碼:

@echo off & setLocal enableDELAYedeXpansioN

for /L %%a in (0 1 10) do (
for /L %%b in (1 1 10) do (
set X=%%a%%b
echo. !X!
)) >>newfile.txt

rem ----> findstr /V "11 22 33 44 55 66" ABCD.txt > outfile.txt

這是上面輸出到文件的內容

11
12
13
.
.
.
98
99

我的問題是,當第一個循環和第二個循環變數相同時,我不想在文字檔案中看到相同的重複數字或值,例如 (11,22,33....)。

我可以將findstr命令放入混合中(在腳本中註解掉)以在第二個新文字檔案中過濾它,但我想看看僅使用 for 循環是否可以實現這一點?

我的意思是,echo. !X!正在顯示結果,我想添加!X!到另一個 for 循環中!X!,該循環檢查它是否包含112255...我需要它跳過這些值(相同)並繼續處理echo.文本文件中不相同的剩餘數值來自兩個循環。

答案1

當然,您可以使用一些簡單的條件IF NOT並告訴它第一個FOR /L變數是否%%a等於第二個FOR /L變數的值%%becho到輸出文件。

我還將>>附加重定向到循環內的echo變量%X%,以確保它按照您的預期附加到循環中的正確值。此外,我將初始邏輯放在最上面,IF EXIST newfile.txt DEL /Q /F newfile.txt因此如果它在運行之前存在,請先將其刪除。

@ECHO ON
setlocal enabledelayedexpansion

IF EXIST newfile.txt DEL /Q /F newfile.txt
for /L %%a in (0 1 10) do ( 
    for /L %%b in (1 1 10) do ( 
        IF NOT %%a==%%b set X=%%a%%b
        echo. !X! >>newfile.txt
)) 

範例輸出


更多資源

相關內容