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 루프를 사용하여 이것이 가능한지 알고 싶습니다.

즉, or 또는 ... 이 포함되어 있는지 확인하는 또 다른 for 루프에 echo. !X!추가하고 싶은 결과가 표시된다는 뜻입니다. 해당 값(동일)을 건너뛰고 동일하지 않은 텍스트 파일의 나머지 값을 추가로 진행해야 합니다. 두 루프 모두에서.!X!!X!112255echo.

답변1

물론 간단한 조건문을 사용할 수 있습니다.IF NOTFOR /L그리고 첫 번째 변수가 to not 의 두 번째 변수 %%a값과 같은지 알려줍니다 .FOR /L%%becho출력 파일에.

또한 예상한 대로 루프의 올바른 값에 추가되도록 루프 내의 변수 에 >>추가 리디렉션을 배치했습니다 . 또한 초기 로직을 ​​맨 위에 배치하므로 실행 전에 존재하는 경우 먼저 삭제됩니다.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
)) 

예제 출력


추가 리소스

관련 정보