2016-02-29 113 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