2

Пакетный скрипт, который я использую, содержит следующий код:

@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 в mix (закомментировать в скрипте), чтобы отфильтровать ее во 2-м новом текстовом файле, но я хотел бы посмотреть, возможно ли это, просто используя цикл for?

Я имею в виду это echo. !X! показывает результаты, которые я хочу добавить !X! в другом для цикла, который проверяет !X! , если он содержит 11 или 22 или 55 ... Мне нужно просто пропустить эти значения (то же самое) и продолжить echo. остальные значения в текстовом файле, которые не совпадают в обоих циклах.

1 ответ1

2

Конечно, вы можете использовать простое условное условие 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
)) 

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .