batch-file - 使用批处理从文本文件中删除最后一行(包括空行)

标签 batch-file

我的文本文件

Header
A,B,C,D,E
F,G,H,I,J
K,L,M,N,O
Footer

我想删除页脚和页脚下面的空行(空行不是静态的)和我的预期输出

Header
A,B,C,D,E
F,G,H,I,J
K,L,M,N,O

我尝试了下面的代码,但它只删除了最后一个空行。

set row=
for /F "delims=" %%j in (file.txt) do (
  if  defined row echo.!row!>> newfile.txt
  set row=%%j
)

最佳答案

这将是执行任务的通用方式; 如果您想要不同的东西,请考虑提供更具体的信息和示例文件:

@Echo Off
SetLocal DisableDelayedExpansion

Set "SrcFile=file.txt"

If Not Exist "%SrcFile%" Exit /B
Copy /Y "%SrcFile%" "%SrcFile%.bak">Nul 2>&1||Exit /B

(   Set "Line="
    For /F "UseBackQ Delims=" %%A In ("%SrcFile%.bak") Do (
        SetLocal EnableDelayedExpansion
        If Defined Line Echo !Line!
        EndLocal
        Set "Line=%%A"))>"%SrcFile%"
EndLocal
Exit /B

您应该在第 4 行更改您的文件名以匹配您的实际源文件的名称。如果您对结果满意,您可以选择删除 .bak 文件,(这是原始文件的备份,为安全起见保存)

注意:生成的文件将以正常的CRLF结尾,(即底部会有一个空行)。

关于batch-file - 使用批处理从文本文件中删除最后一行(包括空行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557931/

相关文章:

batch-file - 如何使用 ffmpeg 和屏幕截图创建批处理文件?

batch-file - bat 游戏。使用 set/p 添加计时器

c++ - 重定向exe批处理文件的输出

windows - 如何检查一个变量是否包含 Windows 批处理文件中的另一个变量?

windows - 批处理脚本 - 下面的批处理文件中的错误在哪里?

windows - ffmpeg 和 ffprobe 嵌套延迟扩展变量

php - SwiftMailer Batch 电子邮件使我的服务器超时

batch-file - 批处理文件 - 删除第二个文件扩展名

windows - 从外部函数批处理返回字符串

windows - Windows 7 中丢弃的 CALL 批处理文件环境变量