当前位置: 首页 > 知识库问答 >
问题:

复制文本文件中的最后一段

公良玺
2023-03-14

我有兴趣写一个批处理脚本,它将在一个有许多其他文本块的. txt文件中复制最后一个文本块。想想执行脚本的日志文件,但没有任何一致的内容或长度。每个条目由空行分隔。

因此,对于以下文件,我只想选择并复制最后一段:

知识是一种美德,是一种美德,是一种美德,是一种美德。

但是,在最低限度上,我们需要一个实验室来进行日常工作。

杜伊斯奥特鲁尔杜洛在谴责在波罗的海韦尔特埃塞西莱姆杜洛雷欧盟逃犯nulla pariatur。例外的情况下,不存在,必须在错误的地方,在错误的地方,莫利特和其他地方。

文本本身的长度可以不同。我所需要的唯一可靠指标是,它将是文档中最后一个空行后面的所有内容——在本例中,是“Duis aute…”后面的所有内容

我认为脚本的大纲应该是这样的,但我对batch一点也不熟悉。非常感谢您提供的任何帮助!

SET FOO
FOR /F "delims=" %%G IN (somefile.txt) DO
(IF "%%G"=="" (SET FOO="" )
ELSE (SET FOO==%%G + %FOO%))
ECHO %FOO%>whatever.txt

共有2个答案

卫才
2023-03-14

你可以这样做:

@echo off
setlocal EnableDelayedExpansion
SET "FOO="
type "file.txt" > "file.txt.tmp"
for /f "tokens=1* delims=:" %%A in ('findstr /n "^" "file.txt.tmp"') do if [%%B]==[] (SET "FOO=") else (SET "FOO=!FOO!%%B")
del "file.txt.tmp"
>filepara.txt echo %FOO%

这只有一个缺点,它不会将原始段落中的换行符回显到文本文件中。

编辑:

我找到了一种保持换行符的方法,通过创建一个包含换行符的变量:

@echo off
setlocal EnableDelayedExpansion
set LF=^


SET "FOO="
type "file.txt" > "file.txt.tmp"
for /f "tokens=1* delims=:" eol=¬ %%A in ('findstr /n "^" "file.txt.tmp"') do if [%%B]==[] (SET "FOO=") else (SET "FOO=!FOO!%%B!LF!")
del "file.txt.tmp"
>temp.txt echo !FOO!
more temp.txt > paragraph.txt
del temp.txt

注意:您需要设置LF后的两行空行才能正常工作!

谭昱
2023-03-14
@echo off
setlocal

rem Get the line number of the last empty line
for /F "delims=:" %%a in ('findstr /N "^$" somefile.txt') do set "skip=skip=%%a"

rem Show all lines after it
for /F "%skip% delims=" %%a in (somefile.txt) do echo %%a
 类似资料:
  • 问题内容: 我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。 问题答案: 如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作: 从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。 如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。

  • 如何将一个文本文件复制到另一个文本文件中?我试过这个: 这只是在中留下以下值:。 我做错了什么?

  • 我正在处理此代码的特定部分,该部分允许用户更改有关保存在txt文件中的项目的详细信息。每个项目都保存在单独的行上,如下所示: 如果用户输入“c”,将要求他们在菜单中键入项目名称,然后输入“a”更改日期。这一切都很好,除了不只是更改txt文件中所需行的日期,而是用文件中最后一行的副本替换项目。 它最终看起来像这样(注意第3行的项目现在是第5行的副本,但是有了新的日期): 这是用户与菜单交互的主要方法

  • 问题内容: 我想将某些文本行从一个文本文件复制到另一个文件。在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分?例如,仅在其中包含“ tests / file / myword”的情况下才复制行? 当前代码: 问题答案: 单线: 推荐搭配: 使用更少的内存:

  • 问题内容: 从Java中的[非常大]文件中读取文本的最后一行的最快,最有效的方法是什么? 问题答案: 以下是两个函数,一个函数返回文件的最后一个非空白行而不加载或单步浏览整个文件,另一个函数返回文件的最后N行而不单步浏览整个文件: 尾部的作用是直接缩放到文件的最后一个字符,然后逐个字符向后退一步,记录所看到的内容,直到找到换行符为止。找到换行符后,便会跳出循环。反转记录的内容,并将其放入字符串中并