写第1行到第i行的.txt文件

我非常接近我的答案,但我似乎无法find答案。 我在batch file中使用Findstr函数来将整个目录的范围缩小到只有一个文件。

cd ... findstr /s /m "Desktop" *class.asasm >results1.txt findstr /m /f:results1.txt "Production" *class.asasm >results2.txt findstr /n /f:results2.txt "Capabilities" *class.asasm >results3.txt 

任务1:我需要找出一种方法来使findtr向后search第三行的行号find第四个string

任务2:我需要写第1行 – 我们到达的文件中的results2.txt插入一个.txt文件。 然后写下其余的原始行。

我正在使用Visual Studios编写一个VB.Net应用程序,我很难搞清楚如何完成这个过程。 我现在有更好的应用程序运行在应用程序中写入batch file。

Solutions Collecting From Web of "写第1行到第i行的.txt文件"

正确的解决方案是找到一个正确执行此操作的工具。 批/ CMD不。

这是一个脚本,告诉你第三和第四场比赛的线路号码。 这可能不是你想要的,但它是一个演示如何有效地使用行号。

 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET FILE=TestFile.txt SET _LINENO=1 SET _MATCHNO=0 SET _THIRDLINENUM= SET _FOURTHLINENUM= FOR /F %%l IN (%FILE%) DO ( ECHO %%l | FINDSTR "Target" %_TMP% >NUL IF NOT ERRORLEVEL 1 ( SET /A _MATCHNO=!_MATCHNO!+1 IF !_MATCHNO!==3 SET _THIRDLINENUM=!_LINENO! IF !_MATCHNO!==4 SET _FOURTHLINENUM=!_LINENO! ) SET /A _LINENO=!_LINENO!+1 ) @ECHO %_THIRDLINENUM% : %_FOURTHLINENUM% 

以下是TestFile.txt中的内容

 abcdefg bcdefgh Target 1 cdefghi defghij fghijkl Target 2 ghijklm hijklmn ijklmno jklmnop klmnopq lmnopqr mnopqrs Target 3 nopqrst Target 4 opqrstu pqrstuv qrstuvw rstuvwx stuvwxy tuvwxyz 

如果你坚持使用批处理/ CMD(有时候我没有其他的东西可用),并且你需要在文本#n(否则,头部和尾部就可以了),你可以产生一个类似的循环,但是将FINDSTR中的代码替换为IF语句的末尾,并将_LINENO与其他变量进行比较,如果该值在两个值之间,则回车。 我不知道IF是否支持逻辑运算符,因此您可能需要嵌套IF语句,如

 IF !_LINENO! GEQ %START_LINE% IF !_LINENO! LEQ %END_LINE% @ECHO %%l 

假设你需要(从你的第一个评论):

我还没有找到一种方法来搜索行xx而不是1,或者以相反的顺序搜索

你可以尝试这个(从命令行):

 for /r %i in ("file pattern") do @more "%~i" +starting_line |findstr "search string" 
  • for /r =递归的(如果你的意思真的reverse ,请解释)
  • “文件模式”=要找到的文件,例如。 “* class.asasm”
  • starting_line =搜索起始行,例如。 7( more +6
  • “搜索字符串”=您的搜索模式,例如。 “桌面”
    • 或搜索“桌面生产能力”
    • AND search |findstr "Desktop"|findstr "Production"|findstr "Capabilities"