2012-01-05 3 views
1

나는 조건과 일치하는 줄의 양을 기준으로 텍스트 파일에 빈 줄을 추가하는 .bat 파일을 만들려고 노력하고 있습니다. 이 가지고 무엇을 :명령 결과를 일괄 적으로 변수에 저장하는 방법은 무엇입니까?

@echo 
SET /a maxLineas = 50 
SET cantLineasDetalle="type texto.txt | find /i /c "D01" " 
SET /a cantLineasAgregar = %maxLineas% - %cantLineasDetalle% 

:loop 
echo. >> texto.txt 
set /a cantLineasAgregar-=1 
if %cantLineasAgregar% GTR 0 goto loop 

의 문제점은 VAR "cantLineasDetalle는"나는하고 싶은 값을 저장되지 않는 것입니다.

'type texto.txt |/i/c "D01" '을 (를) 변수에 찾으시겠습니까?

미리 감사드립니다. 에스테반./F %% 난에 대한

답변

1

이전 답변 바와 같이, 당신은 용을 사용/F 루프를 사용하여 명령 결과를 변수에 저장합니다.

find "search" <file은 파일 크기가 큰 경우 type file | find "search"보다 훨씬 효율적입니다.

FOR/F IN() 절 내에서 실행될 때 모든 특수 문자는 인용되거나 이스케이프되어야합니다. 귀하의 경우 파이프를 이스케이프 처리해야합니다. 또는 제 제안을 받아들이면 <을 이스케이프 처리해야합니다.

echo. >>file은 파일에 공백이있는 행을 추가합니다. 또한 echo. 대신 echo(을 사용하는 것이 더 안전하지만 에코와 관련된 문제는 절대로 발생하지 않습니다. 공백없이 빈 줄을 얻으려면 echo(>>file

SET/A를 사용하여 수학을 수행하는 경우 퍼센트로 묶지 않고 변수를 직접 참조 할 수 있습니다. 또한 퍼센트와 함께 작동합니다.

마지막으로 GOTO 루프를 사용하는 대신 FOR/L 루프 내에서 줄을 추가하는 것이 훨씬 효율적입니다.

@echo off 
set /a maxLineas=50 
for /f %%N in('find /i /c:"D01" ^<texto.txt') do set /a cantLineasDetalle=%%N 
set /a cantLineasAgregar=maxLineas-cantLineasDetalle 
for /l %%N in (1 1 %cantLineasAgregar%) do echo(>>texto.txt 

전체 스크립트는 다음과 같은 압축 될 수있는 답변에 대한

@echo off 
set /a maxLineas=50-1 
for /f %%N in('find /i /c:"D01" ^<texto.txt') do for /l %%I in (%%N 1 %maxLineas%) do echo(>>texto.txt 
+0

감사합니다. 응답하기 몇 분 전에 콘솔에서 응답을 찾았습니다. 그게 내가 한 일이다. "for/f"tokens = 3 "%% G in ('find/i/c"D01 "C : \ texto.txt') do cantLineasDetalle = %% G" 내 코드를 수정 해주십시오. 나는 정말로 당신의 대답을 apreciate. 고마워, 또. – t3b4n

+1

@ t3b4n - FIND가 기발합니다 :'FIND "검색"file "은'FIND"검색 "과 다릅니다. 첫 번째 줄은 파일 이름 다음에 count라는 두 줄을 생성합니다. 두 번째는 카운트 만 생성합니다. 두 번째 양식이 필요할 것입니다. – dbenham

0

('형 texto.txt | 찾을 수/I/C "D01"') 할 SET cantLineasDetalle = %% 내가

+0

감사 (maxLineas 이제 0 기반),하지만 작동하지 않습니다. "| 예상하지 못함"이라는 오류를 표시합니다. 나는 그 결과를 얻기 위해 내 코드의 네 번째 줄을 너의 것으로 바꿨다. – t3b4n

+0

IN() 절 내에서 '|'문제를 이스케이프 처리해야합니다. – dbenham

+0

내 Windows-Fu는 연마 한 이후로 꽤 녹슬고 오래되었습니다. –

관련 문제