
내가 사용하고 있는 배치 스크립트에는 다음 코드가 포함되어 있습니다.
@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!
11
22
55
echo.
답변1
물론 간단한 조건문을 사용할 수 있습니다.IF NOT
FOR /L
그리고 첫 번째 변수가 to not 의 두 번째 변수 %%a
값과 같은지 알려줍니다 .FOR /L
%%b
echo
출력 파일에.
또한 예상한 대로 루프의 올바른 값에 추가되도록 루프 내의 변수 에 >>
추가 리디렉션을 배치했습니다 . 또한 초기 로직을 맨 위에 배치하므로 실행 전에 존재하는 경우 먼저 삭제됩니다.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
))