2010-07-29 6 views
1

Windows 배치에서 텍스트 파일의 특정 줄을 인쇄하는 상당히 효율적인 방법을 찾으려고합니다. Windows 배치이어야하며 다른 도구 (gwk.exe, perl, python, javascript 등)가 없어야합니다. 나는 꽤 길 수있는 줄 번호 (1, 7, 15, 20 등)의 목록을 가지고있다.Windows에서 텍스트 파일의 특정 줄 인쇄 일괄

아이디어가 있으십니까?

감사합니다.

답변

3

다음은 수행 방법을 보여주는 스크립트입니다. 예상대로

line 1 
line 7 
line 15 
line 20 

: 1에서 24까지의 N에 대한 line N를 포함하는 파일을 통해 실행하면

@setlocal enableextensions enabledelayedexpansion 
@echo off 
set lines=1 7 15 20 
set curr=1 
for /f "delims=" %%a in ('type infile.txt') do (
    for %%b in (!lines!) do (
     if !curr!==%%b echo %%a 
    ) 
    set /a "curr = curr + 1" 
) 
endlocal 

, 당신이 얻을 그것은 세계에서 가장 효율적인 아니지만 명령 스크립트는 거의 :-) 없습니다 .

내선 번호가 에 대해 여러 번 실행되므로 파일의 행마다 줄을 사용하므로 매우 큰 수의 줄 번호에는이 옵션이 사용되지 않습니다.

+0

감사합니다 paxdiablo! 실제로 많은 수의 라인에서는 문제가 있지만 작은 수에서는 괜찮습니다. – Yon

0

당신은 간단한 배치 파일의 몇 가지를 사용할 수 있습니다

main.bat :

@echo off 
set k=0 
for /f "tokens=1*" %%i in (%1) do call helper %%i %%j 

helper.bat :

@echo off 
for /f %%j in (numbers.txt) do if /I %k% equ %%j echo %1 %2 
set /A k=%k%+1 

이 그 다음을 포함하는 numbers.txt 파일을 제공 한 줄에 하나씩 줄 번호를 입력하고 다음과 같이 호출하십시오.

main.bat my_file.txt 

여기서 my_file.txt는 회선을 추출 할 파일입니다.

+0

고마워요,하지만 이것은 다른 대답과 같은 방식으로 일하는 동안 일을 혼란스럽게합니다. – Yon

관련 문제