
我正在使用的批次腳本中有以下程式碼:
@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!
,該循環檢查它是否包含11
或22
或55
...我需要它跳過這些值(相同)並繼續處理echo.
文本文件中不相同的剩餘數值來自兩個循環。
答案1
當然,您可以使用一些簡單的條件IF NOT
並告訴它第一個FOR /L
變數是否%%a
等於第二個FOR /L
變數的值%%b
echo
到輸出文件。
我還將>>
附加重定向到循環內的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
))