Windows批处理文件脚本从目录中的所有文本文件中提取第三行

时间:2011-04-02 11:48:03

标签: windows text batch-file

我需要一个Windows批处理脚本文件来从目录中的所有文本文件中提取第三行,并将它们输出到单独的文本文件中。任何人都可以帮我写一个批处理文件来提取这些信息吗?我是初学者。谢谢!

3 个答案:

答案 0 :(得分:3)

这是可行的,但只是一个小的黑客。

首先,您需要创建批处理文件thirdline.cmd

@echo off
for /f "skip=2 delims=" %%i in (%1) do echo %%i & goto :EOF

然后,从命令行中执行

for %i in (*.*) do @thirdline "%i"

如果您想从另一个批处理文件中执行此操作,则需要将上面的%i更改为%%i(即它们显示在thirdline.cmd中)。

请记住将*.*替换为与您要处理的文件匹配的文件掩码。

最后,上面给出的thirdline.cmd只是将第三行输出到控制台。如果您想将其写入另一个文件(比方说lines.txt),请将thirdline.cmd更改为:

@echo off
for /f "skip=2 delims=" %%i in (%1) do >>lines.txt echo %%i & goto :EOF

答案 1 :(得分:2)

仅作为替代方案,这是另一种方法:

SETLOCAL
(FOR /L %%i IN (1,1,3) DO SET /P line=) < filename.txt
> another.txt ECHO %line%
ENDLOCAL

使用SETLOCAL&amp; ENDLOCAL只要您无法确定要与脚本一起引入的变量是否与现有的变量发生冲突,无论是由系统定义还是由调用批处理脚本(如果有)引入。基本上,使用它们只是为了安全起见。 (感谢Jon提出的建议!)

答案 2 :(得分:0)

如果你有选择,这里有一个Ruby for Windows一个班轮

$ ruby -ne "ARGF.lineno=0 if ARGF.eof?; print if ARGF.lineno==3" *.txt