2011-08-24 7 views
1

full_delete의 토큰을 기반으로 줄을 찾아 삭제해야하는 txt 파일 full_add가 있습니다. 그런 다음 나머지 행과 함께 full_add를 저장하십시오.토큰을 기반으로 txt 파일의 줄 삭제

,691,363 : 이것은 내 생각이다

Employee,800752,,1,9999,,,,, 
Employee,800761,,1,9999,,,,, 

을 deliting 후

full_add

Employee,800751,,1,9999,,,,, 
Employee,800752,,1,9999,,,,, 
Employee,800761,,1,9999,,,,, 
Employee,800762,,1,9999,,,,, 

full_delete

Employee,800751 
Employee,800762 
Employee,800742 

최종 결과 full_add의 : 이 각 파일의 샘플 데이터입니다210

FOR /F "eol=; tokens=2 delims=," %i in (full_delete.txt) do find /v "%i" full_add.txt > full_add.txt 

빈 파일 full_add가 나타납니다. >full_add.txt>tmp.txt으로 변경하면 작동하지만 발견 된 마지막 토큰 행만 삭제합니다. 감사. 프랭크

답변

2

난 당신이 tmp.txt에 출력되는 현재의 변화를 유지해야한다고 생각하지만,이 경우는 추가로 원래 full_add.txt를 제거하고 이름을 변경해야합니다 tmp.txtfull_add.txt에 : 대신

FOR /F "eol=; tokens=2 delims=," %i IN (full_delete.txt) DO (FIND /v "%i" <full_add.txt> tmp.txt & DEL full_add.txt & RENAME tmp.txt full_add.txt) 

또는, , 당신은 다음 tmp.txt를 제거 full_add.txttmp.txt를 복사 할 수 있습니다 :

FOR /F "eol=; tokens=2 delims=," %i IN (full_delete.txt) DO (FIND /v "%i" <full_add.txt> tmp.txt & COPY tmp.txt full_add.txt & DEL tmp.txt) 

업데이트

full_add.txt 앞에 <을 추가하여 두 가지 FIND 명령을 모두 변경했습니다. 또한

, 당신은 아마 (예에 대한 두 번째 스크립트 사용)과 같이 별도의 라인에 루프 본문의 명령을 넣어야 배치 파일에서 스크립트를 사용하려는 경우 :

FOR /F "eol=; tokens=2 delims=," %i IN (full_delete.txt) DO (
    FIND /v "%i" <full_add.txt> tmp.txt 
    COPY tmp.txt full_add.txt 
    DEL tmp.txt 
) 

을 들여 쓰기는 물론 선택 사항입니다.

+0

첫 번째 접근법을 사용하여 잘 작동하지만 파일의 시작 부분에 3 줄만 추가합니다. ---------- FULL_ADD_EMPLOYEE.TXT ---------- FULL_ADD_EMPLOYEE.TXT ---------- FULL_ADD_EMPLOYEE.TXT 또한 이것을 배치에 넣으면 (%% i 사용) 구문 오류가 발생합니다. 귀하의 빠르고 우수한 도움에 감사드립니다. F. – Frank

+0

@ 프랭크 : 내 업데이트를 참조하십시오. –

+0

For 루프가 완벽하게 작동했습니다. 고맙습니다. 에프. – Frank

관련 문제