Imprima valores usando um loop for, mas filtre certos valores sem o comando findstr

Imprima valores usando um loop for, mas filtre certos valores sem o comando findstr

O script em lote que estou usando contém este código:

@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

Aqui está o que o resultado acima gera para o arquivo

11
12
13
.
.
.
98
99

Meu problema é que não quero ver os mesmos números ou valores duplicados como (11,22,33....), no arquivo de texto quando as variáveis ​​do primeiro loop e do segundo loop são iguais.

Posso colocar findstro comando no mix (comentário no script) para filtrá-lo no segundo novo arquivo de texto, mas gostaria de ver se isso é possível usando apenas loops for?

Quero dizer que echo. !X!está exibindo resultados que quero adicionar !X!em outro loop for que verifica !X!se contém 11ou 22ou 55... Preciso apenas pular esses valores (os mesmos) e prosseguir com echo.os valores restantes no arquivo de texto que não são os mesmos de ambos os loops.

Responder1

Claro, você pode usar algumas condicionais simplesIF NOTe diga se a primeira FOR /Lvariável de %%aé igual ao valor da segunda FOR /Lvariável de %%bto notechopara o arquivo de saída.

Também coloquei o >>redirecionamento de acréscimo na echovariável %X%dentro do loop para garantir que ele seja anexado aos valores corretos dos loops conforme o esperado. Além disso, coloquei a lógica inicial no topo IF EXIST newfile.txt DEL /Q /F newfile.txtpara que, se existir antes da execução, seja excluída primeiro.

@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
)) 

Exemplo de saída


Recursos adicionais

informação relacionada