Imprime valores usando um loop for mas filtra determinados valores sem o comando findstr

2

O script em lote que estou usando tem esse 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

Veja o que as saídas acima para o arquivo

11
12
13
.
.
.
98
99

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

Eu posso colocar o comando findstr no mix (comentar 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. Quero adicionar !X! em outro loop for que verifica !X! , se contiver 11 ou 22 ou 55 ... Preciso apenas pule esses valores (o mesmo) e prossiga com mais echo. valores restantes no arquivo de texto que não são os mesmos de ambos os loops.

    
por Adnan Zarrar 09.03.2018 / 16:08

1 resposta

2

Claro, você pode usar alguns IF NOT condicionais simples e informá-lo se a primeira variável FOR /L de %%a é igual ao valor da segunda variável FOR /L de %%b para não echo na saída arquivo.

Eu também coloquei o redirecionamento >> append na variável echo do %X% dentro do loop para garantir que ele seja anexado para corrigir os valores dos loops como você esperava. Além disso, coloco a lógica inicial em cima de IF EXIST newfile.txt DEL /Q /F newfile.txt , então, se ela existir antes da execução, ela é 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

Mais recursos

por 09.03.2018 / 17:48

Tags