2014-10-07 4 views
0

사용자가 입력 한 특정 줄을 한 파일에서 제거한 다음이 파일을 파일 이름과 동일한 이름으로 저장하려고합니다.배치 파일에서 사용자 정의 줄을 제거하는 방법

예를 들어이 코드를 다른 파일의

for /f "tokens=2,3" %%a in ('type c:\files.txt') do 
(
    Set /p line= ENTER THE LINE YOU WANT TO DISREGARD: 
    findstr /v /r /c:"^[!line!]*$" "c:\file1\%%a" > "c:\file2\%%a"  ----> For Column2 (Name1) 
    findstr /v /r /c:"^[!line!]*$" "c:\file1\%%a" > "c:\file2\%%a"  ----> For Column3 (Name2) 
) 

Files.txt에 포함 된 파일 이름을 가지고있다. 그런 다음 문에 대한 내 에, 그것은 모든 Files.txt (열 2와 COLUMN3)에 표시된 파일

files.txt 샘플 내용을 엽니 다

Name Name1.txt Name2.txt 
Age  Age1.txt Age2.txt 
Add  Add1.txt Add2.txt 

내가 왜 자동으로 배치 파일을 실행하면 파일 안의 모든 텍스트를 삭제합니까? 또한 한 프롬프트에서 정의 된 여러 사용자를 어떻게 삭제할 수 있습니까? 쉼표로 구분할 수 있습니까?

답변

0

나는 정규식 구문과 결합 된 enabledelayedexpansion 키워드를 놓친 것 같아 모든 것을 닦아 냈을 것입니다. 본질적으로^[문자 세트] * $ - 예 : 대부분의 경우, 모든 줄은 아닙니다.

실제로 무엇을하려는 정규식이 필요하지 않습니다.

여러/v 문을 사용하여 여러 문자열을 제외 할 수 있습니다.

이 시도 :

@echo off 
setlocal ENABLEDELAYEDEXPANSION 

rem They can enter a comma separated list of strings to replace 
for /f "tokens=1,2,3" %%a in (c:\files.txt) do (
    set /p line=ENTER THE LINE YOU WANT TO DISREGARD for %%a: 
    set line=!line:,=" /c:"! 
    findstr /v /i /c:"!line!" "c:\%%b" > "c:\file1\%%b" 
    findstr /v /i /c:"!line!" "c:\%%c" > "c:\file2\%%c" 
) 
+0

를 해결했다. 해당 파일의 내용도 삭제되었습니다. – PeterS

+0

콘텐츠를 박쥐 파일에 넣고 실행하고 있습니까? 예 : doReplace.bat –

+0

여기 내 코드에 관한 단계가 있습니다 1st - files.txt에는 files.txt가있는 디렉토리에서 찾을 수있는 파일의 파일 이름이 들어 있습니다. 그런 다음 위의 예제와 같은 files.txt 열 2 및 3의 파일에 대한 특정 줄을 제거한 다음 저장하려고합니다. 난 당신이 제안한 코드를 여전히 열 2 및 column3에 대한 파일의 내용을 모두 삭제했습니다. – PeterS

0

은 이미 당신의 제안하지만 행운을 사용하려고 문제

Set /p line= enter line to remove : 
for /f "tokens=2,3" %%a in ('type c:\file\files.txt') do (

Type c:\file\aaa\%%a | findstr /I /V /C:"!line!" > c:\file\aaa\OUTPUT\%%a 
Type c:\file\bbb\%%b | findstr /I /V /C:"!line!" > c:\file\bbb\OUTPUT\%%b 
관련 문제