2014-10-07 5 views
-1

두 개의 파일이 있고 배치 스크립트에서 다른 파일을 '포함'하고 있는지 확인하려고합니다. '포함'은 첫 번째 파일의 줄 집합에 두 번째 파일의 줄 집합이 들어 있음을 의미합니다. 이 파일 예를 들어배치 파일에서 작업 설정

:

a 
b 
c 
d 
e 
f 
g 

이 파일이 포함되어

a 
b 
d 
g 

을하지만,이 파일이 포함되어 있지 않습니다 : 나는 작업이 매우 복잡하지 실현

a 
b 
z 

을 하지만 상자 밖에서 작업을 지원하는 명령 줄 도구가 있는지 궁금합니다. 예를 들어, 첫 번째 파일 내의 파일의 각 라인을 검색 루프를 기록하기위한 대안 ...

+1

배치 파일은 자주 사용하는 파일, 문자 집합의 컨텍스트에 의존하고, 독 문자가있는 경우 특수 처리를해야합니다. 귀하의 예제는 파일의 실제 작업이나 구성에 대해서는 아무것도 보여주지 않습니다. – foxidrive

+0

즉, 상황에 대한 몇 가지 자세한 사례를 알려주십시오. 지금까지 시도한 코드도 제공하십시오. – Monacraft

+0

@foxidrive, 여기에는 아무런 걱정거리가 없으므로 언급하지 않았습니다. 파일은 ascii로 인코딩됩니다. – Vitaliy

답변

1

원래 게시물 대부분의 코드가 필요하지 편집, 그럼으로서

(같은 순서로)라는 이름의 파일을 사용자의 설정, fullList.txt, list1.txtlist2.txt

,이

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    set "mainFile=.\fullList.txt" 

    for %%f in (list*.txt) do (
     findstr /l /x /v /g:"%mainFile%" "%%~ff" >nul && ( 
      echo %%f is not included 
     ) || ( 
      echo %%f is included 
     ) 
    ) 

는 어떻게 작동합니까 일을해야합니까? 각 파일에 대해 단지 findstr 명령입니다. "작은 목록"파일에서 "큰 목록"파일에 포함되지 않은 문자열을 검색합니다. 모든 줄이 발견되면 파일이 포함되지 않은, 다른 사람이

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
PUSHD "%sourcedir%" 
SET "is_subset=Y" 
FOR /f "delims=" %%a IN (subset_file.txt) DO (
FIND "%%a" "superset_file.txt">NUL 
IF ERRORLEVEL 1 ECHO fail ON "%%a"&SET "is_subset=N"&GOTO done 
) 
:done 
POPD 
ECHO subset IN superset : %is_subset% 

GOTO :EOF 

이 작동합니다을 포함 - 그러나 당신의 질문은 불분명하다. 위 집합에 이 포함되어 있는지 확인하고 구성원을 모두 검색하지만 일부 명의 회원을 검색하고있을 수 있습니다.

U: 드라이브에 테스트 파일을 사용 했으므로 수정해야합니다.

0

아래 해결책은 매우 빠른 방법으로 문제를 해결합니다. 추가 데이터, 그것은 큰 파일에 포함되지 않은 작은 파일에서 선을 보여

@echo off 
setlocal 

for /F "delims=" %%a in (smallFile.txt) do set "line[%%a]=1" 
for /F "delims=" %%a in (largeFile.txt) do set "line[%%a]=" 
set "anyLine=" 
for /F %%a in ('set line[ 2^>NUL') do set "anyLine=1" 
if defined anyLine (
    echo Large file does NOT "contain" the small file. Lines not contained: 
    echo/ 
    for /F "tokens=2 delims=[]" %%a in ('set line[') do echo %%a 
) else (
    echo Large file "contain" the small file. 
) 
관련 문제