Выводить значения с помощью цикла 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!, содержит ли он 11или 22или 55... Мне нужно, чтобы он просто пропускал эти значения (одинаковые) и продолжал работу с echo.оставшимися значениями в текстовом файле, которые не совпадают в обоих циклах.

решение1

Конечно, вы можете использовать некоторые простые условные операторы.IF NOTи скажите ему, если первая FOR /Lпеременная %%aравна значению второй FOR /Lпеременной, %%bто нетechoв выходной файл.

Я также поместил >>перенаправление append в 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
)) 

Пример вывода


Дополнительные ресурсы

Связанный контент