
Пакетный скрипт, который я использую, содержит следующий код:
@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
))