2016-02-29 111 views
1

嗨我想從批處理文件的多個.txt文件的頂部刪除前3行。第一行和第二行包含文本,第三行爲空白。我試圖找到一種方法根據行號刪除行。刪除行(包括空白行)

e.g Line 1 ABCD  
    Line 2 EFG 
    Line 3 
    Line 4 cool this works 
    Line 5 line of text 
    Line 6 line of text 
    Line 7 
    Line 8 line of text 

我已經使用下面的代碼工作,但我必須給變量作爲「關鍵字」,我想使用行號作爲變量。另外,由於某些原因,光標總是在每個「new.txt」文件的頂部創建一個空行。

@ECHO OFF 
SETLOCAL 
FOR %%i IN (C:\source\*.txt) DO (
TYPE "%%i"|FINDstr /l /v "ABCD EFG" >> C:\newfiles\%%~ni.new 
) 
GOTO :EOF 
+0

要刪除前3行,使用:'> 「C:\ newfiles \ file.new」(對於/ F有usebackq ^跳過^ = 3^delims^=^eol^= %% L in(「C:\ source \ file.txt」)do echo(%% L)' – aschipfl

+1

但是我給了它一個bash,它返回一個空白文件。繼續研究 – Jonas

+0

'more +3 input.txt> output.txt',但它將空格替換爲TAB(這可能是也可能不是問題) – Stephan

回答

2

給此代碼嘗試:

@echo off 
set InPutfile=InputFile.txt 
set OutputFile=OutPutfile.txt 
(
    for /F "usebackq skip=3 delims= eol=" %%L in (`Type "%InPutfile%"`) do echo %%L 
)>%OutputFile% 
Start "" %OutputFile% 
+1

'for/F'會跳過所有空行,例如在給定的例子中是第7行。而且,'...... eol =「'會用所有的雙引號來引用所有行。 – JosefZ