【问题标题】:Windows Batch, how to remove first line and last line and save as a new text fileWindows Batch,如何删除第一行和最后一行并保存为新的文本文件
【发布时间】:2015-07-16 03:26:27
【问题描述】:

text1.txt

20150716
aaaa
bbbb
cccc
dddd
END

我想删除 20150716,然后整个文本将向上移动 1 行并删除最后一个特定字符串“END”。 最后,另存为名为 text1_copy.txt 的新文件。 然后,文件变成:

aaaa
bbbb
cccc
dddd

有什么想法吗?谢谢。

【问题讨论】:

  • 感谢 zedfoxus 发布参考链接,我发现第一个链接很有用。 for /f "skip=1 delims=*" %%a in (file.txt) do (echo %%a >> newfile.txt ) 它确实删除了第一行,其余行向上移动。 但是,对于第二个链接,我只是没听懂,对我来说可能有点复杂。无论如何,我找到了一个关于如何删除“END”的解决方案,它正在使用循环并保持读取并逐行输出到 newfile2.txt 直到循环点击“END”,我稍后会发布我的解决方案。跨度>

标签: batch-file text save


【解决方案1】:

这只是跳过第一行,不写最后一行。

@echo off
    setlocal enableextensions disabledelayedexpansion

    for %%a in ("text1.txt") do > "%%~dpna_copy%%~xa" (
        set "line="
        for /f "skip=1 tokens=* delims=0123456789" %%a in ('
            findstr /n /r "^" "%%a"
        ') do (
            if defined line (
                setlocal enabledelayedexpansion
                echo(!line:~1!
                endlocal
            )
            set "line=%%a"
        )
    )

【讨论】:

  • 亲爱的 MC ND,你摇滚。您的代码有效,并且确实自动创建了一个没有第一行和最后一行的 text1_copy.txt。谢谢。
  • @KenyKeny 如果您满意,您有责任接受它作为解决方案。
【解决方案2】:

检查tailhead.bat,这将允许您按数字显示文件中的行:

call tailhead.bat -file="text1.txt" -begin=2 -end=-2 >newfile.txt

【讨论】:

    【解决方案3】:

    我为此制作了一个名为 cut.bat 的简单 .bat 文件

    set file=%~1
    set outfile=%~2
    if exist %file% goto Main
    :error
    echo Invalid File!
    goto end
    :main
    for /F "delims=" %%j in ('more +1 %file%') do (
      if  defined row echo.!row!>> %outfile%
      set row=%%j
    )
    :end
    

    你要做的就是

    调用cut.bat test1.txt output.txt

    【讨论】:

      【解决方案4】:
      more +1 t.txt|findstr /vX "END" > text1_copy.txt
      

      more +1 跳过第一行
      findstr /vx "END" 删除每一行,即END(不会删除ENDINGTHE END 之类的行)

      【讨论】:

        【解决方案5】:

        为了你的情况,为了好玩,你可以在 3 个纯粹的 DOS 命令中进行操作

        findstr /V "20150716" input.txt > output.1.txt
        findstr /V "END" output.1.txt > output.2.txt
        copy output.2.txt input.txt
        

        有关信息,使用带有 FINDSTR DOS 命令的“(20150716|END)”Reges 似乎不适用于 /V 选项!

        但是在安装 GOW 或 CYGWIN 后使用 SED 命令是最重要的

        sed -i "1d;$d" input.txt
        

        在哪里

        • -i 选项直接在输入文件中强制替换
        • 1d 请求删除第一行
        • $d 请求删除最后一行

        您可以从Gow GITHUB下载GOW

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-20
          • 1970-01-01
          相关资源
          最近更新 更多