2012-11-13 71 views
0

我正在嘗試編寫一個批處理文件,該文件將提取文本文件中的行6000到6999。從谷歌搜索我來了以下代碼 - 但是這是給我一個空白的輸出文件。提取文本文件部分

@echo off 
SetLocal EnableDelayedExpansion 
type nul > nodedata.txt 
set StartText=6000 
set EndText=7000 
set Flag=0 
for /f "tokens=* delims=" %%a in ('type out.txt') do (
if /i "%StartText%" EQU "%%a" (set Flag=1) 
if /i "%EndText%" EQU "%%a" (set Flag=0) 
if !Flag! EQU 1 echo %%a >> nodedata1.txt 
) 

任何想法,我要去哪裏錯了?

回答

1

您應該安裝unxutils然後看答案爲this的問題... Windows正在只是不適合文本處理做出...

Windows用戶...

+0

如果微軟爲此製作了一個實用程序,它會發出類似'foo.txt中的Found 6000「的消息。複製行6000.複製行6001. ...複製行6999.複製1000行。「這些將與輸出混合在一起,並且需要一個選項來禁用它們。 – Kaz

2

這裏是一個快速和簡單純粹單批溶液

for /l %%a in (6000,1,6999) do (
more C:\file.txt +%%a >>C:\extracted.txt 
) 
+0

您的解決方案執行「更多」命令1000次,每次打開輸出文件並尋求EOF追加下一行。這效率不高 – Aacini

1

這是運行速度更快批量解決方案......

@echo off 
SetLocal EnableDelayedExpansion 
set count=0 
(for /F "skip=5999 delims=" %%a in (out.txt) do (
    echo %%a 
    set /A count+=1 
    if !count! equ 1000 goto endLoop 
    ) 
) > nodedata1.txt 
:endLoop