【问题标题】:windows batch file script to extract third line from all text files in a directorywindows批处理文件脚本从目录中的所有文本文件中提取第三行
【发布时间】:2011-04-03 20:50:54
【问题描述】:

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

【问题讨论】:

    标签: windows text batch-file


    【解决方案1】:

    这是可行的,但只有一个小技巧。

    首先,你需要创建一个批处理文件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
    

    【讨论】:

    • @Jon 很抱歉,但我不知道如何按照您上面写的说明进行操作。在这方面,我完全是个傻瓜。你能写一个代码,我保存到一个文本文件并将它命名为something.bat,把它放在与我想从中提取文本的文件相同的目录中,然后双击它,瞧。我很抱歉成为这样的菜鸟。我很快就会知道这一点,但现在这件事很紧急。
    • @techdaemon:我已经给出了可以让你完成 99% 的指示,并且不想充当帮助台。
    • 换句话说,你只是很懒惰。乔恩已经给了你足够的信息让你继续工作。他不会完全为你做你的工作。
    • @Jon 和@kurumi 我花了一些时间才得到 Jon 的指示。不是我懒惰,而是我不只是擅长这个。所以我打开了 cmd 并将 dir 更改为我的文件所在的位置。该命令不起作用,我认为这是因为文件名中的空格和特殊字符。我该怎么办?
    • @techdaemon:使用for %i in (*.*) do @thirdline "%i"(在%i 周围添加引号)
    【解决方案2】:

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

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

    当你不能确定你要在你的脚本中引入的变量是否不会与已经存在的变量发生冲突时使用SETLOCAL & ENDLOCAL脚本,如果有的话。基本上,使用它们只是为了安全起见。 (感谢乔恩的建议!)

    【讨论】:

    • +1:非常非常好!我完全不会想到这一点!如果我可以提出改进建议:SETLOCAL/ENDLOCAL.
    • @Jon:谢谢。我想我对SETLOCAL/ENDLOCAL 不是很熟悉,尽管我知道它们在理论上是干什么用的。我的意思是我不明白为什么在这里需要它们(或会带来任何改进)。他们可能有一些我不知道的微妙之处。 (或者可能是一些我看不到的相当基本的东西。)
    • 为了避免使用line 变量覆盖或污染环境。
    • @Jon:嗯,基本没问题。 :) 点了,答案已编辑。
    【解决方案3】:

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

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

    【讨论】:

    • 我不知道如何使用 ruby​​。我是个十足的菜鸟。我是认真的。蝙蝠脚本没有东西吗?
    • 下载安装。然后像这样从命令行运行它。没有那么困难。你也是批处理的初学者。
    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多