2012-02-07 3 views
1

명령을 사용하여 배치 파일을 사용하지만 link.2011*.log이라는 로그 파일 세트에서 현재 findstr을 수행하고 있지만 로그 파일을 에코하려는 데 문제가 있습니다.집합을 사용하여 일괄 처리

코드는 다음 output.txt가하는

... 
set /P log=.\DIR\%DEV%\link.2011*.log 
findstr /L /C:"matrix" %log% 
if errorlevel 1 (
echo %DEV% --- matrix not found >> .\output.txt 
) else (
echo %DEV% --- matrix found %log% >> .\output.txt 
:END 

%dev% 변수를 인쇄하지만 %log% 변수 출력 전체 문자열 .\DIR\%DEV%\link.2011*.log

나는 출력 실제 link.2011xxxxxxxx.log보다는 문자열 코드를 싶습니다.

도움을 주시면 감사하겠습니다.

감사합니다.

+1

'/P log =. \ DIR \ % DEV % \ link.2011 * .log'를 설정해야합니다. 내 시스템에서는'.DIR %% DEV % \ link.2011 * .log'를 콘솔에 "프롬프트"로 쓰고 사용자가 응답으로 뭔가를 입력하면 변수'% log % '. 뭔가 다른 것을하는 시스템이 있습니까? – ruakh

+0

@ruakh - 제 생각에는 set 명령을 사용하여 디렉토리에서 각 로그 파일을 선택하고 % string % 변수를 사용하여 특정 문자열을 찾습니다. 이 질문에 대한 대답이 확실하지 않습니다. 당신이 명령 창을 통해 사용자 상호 작용을 찾고 있다면 나는 어딘가 stackoverflow에서 그것을 보았을 것 같아요, 그냥 검색. – redsu

답변

0

당신이 FINDSTR 명령으로 /M 스위치를 사용하는 경우, 출력은 경기 장소 촬영 한 파일 (들)의 이름 (들)이 표시됩니다 : 당신은 출력을 원하는 경우

FINDSTR /M /L /C:"matrix" "%log%" >> .\output.txt 

을 정확히 예를 들어 스크립트처럼되고, 다음과 같은 방법을 시도해 볼 수도 있습니다 :

문자열를 들어, FINDSTR 명령을 검색하고 임시 파일로 파일 목록을 출력
FINDSTR /M /L /C:"matrix" "%log%" > .\tmpoutput.txt && (
    ECHO %DEV% --- matrix found: >> .\output.txt 
) || (
    ECHO %DEV% --- matrix not found >> .\output.txt 
) 
TYPE .\tmpoutput.txt >> .\output.txt 
DEL .\tmpoutput.txt 

. 검색에 성공하면 matrix found 메시지가 .\output.txt에 인쇄되고, 그렇지 않으면 matrix not found 메시지가 인쇄됩니다.

그런 다음 .\tmpoutput.txt의 내용이 output.txt에 추가됩니다. (이 경우 임시 파일이 비어 있으므로 output.txt의 내용에는 영향을 미치지 않으므로 일치하지 않는 경우이 단계 수행에 대해 걱정할 필요가 없습니다.

+0

감사합니다. Andriy. 매우 감사. – redsu

+0

다시 한 번, 스크립트에 관해 다른 질문이 있습니다. 예를 들어 로그마다 "매트릭스"를 찾고 싶은. * TEMP \ * 로그 내에 * .logs 목록이 있습니다. 그러나 발견 된 문자열 행렬과 발견 된 로그의 이름을 output.txt에 표시하려고합니다. Andriy에게 다시 한 번 감사드립니다. – redsu

+0

@redshogun :'/ M '이 없으면'FINDSTR'은 파일 이름과 일치가 발생한 실제 행을 모두 표시합니다. 형식은'filename : line'입니다. 명령을 별도로 실행하여 직접 확인하십시오. (또한 파일 이름은'FINDSTR' 자체에 의해 표시된 것처럼 강조 표시되지만, 출력을 재 지정하면 강조 표시가 취소됩니다.) –