首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理:是否从文本文件末尾删除换行符?

问批处理:是否从文本文件末尾删除换行符?
EN

Stack Overflow用户
提问于 2011-06-06 23:07:15
回答 2查看 9.4K关注 0票数 2

我有一个.txt文件,需要去掉最后一个换行符。在十六进制编辑器中查看该文件,它在末尾显示"0d 0a“。

我已经查看了线程How to delete Linefeed using batch file,但这并没有帮助。我试过COPY source target /b,它也不起作用。

不幸的是,我不能使用Java或任何第三方工具,我需要使用批处理文件。

我怎样才能去掉末尾的换行符?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-07 16:52:54

使用batch,这应该是可行的。

代码语言:javascript
复制
@echo off
setlocal DisableDelayedExpansion
set "firstLineReady="
(
    for /F "eol=$ delims=" %%a in (myFile.txt) DO (
        if defined firstLineReady (echo()
        set "firstLineReady=1"
        <nul set /p "=%%a"
    )
) > out.txt

它复制所有行,并将CR/LF附加到每行,但不附加到最后一行

票数 3
EN

Stack Overflow用户

发布于 2011-06-07 16:11:12

尝试使用以下代码作为起点

代码语言:javascript
复制
@echo off
copy %1 temp.txt
echo d >debug.tmp
echo r >>debug.tmp
echo a >>debug.tmp
echo dec cx >>debug.tmp
echo dec cx >>debug.tmp
echo. >>debug.tmp
echo g =100 102 >>debug.tmp
echo w >>debug.tmp
echo q >>debug.tmp
debug temp.txt <debug.tmp

此批处理首先将文件复制到需要具有8.3名称的临时文件。

然后,它准备一个调试脚本来截断临时文件的最后两个字节。

前两个调试指令R和D仅用于显示文件和寄存器(具有包含文件长度的重要Cx值)的内容,可以将其删除。

然后,调试脚本进入汇编模式A,并生成两条DEC CX指令,这两条指令的值是CX的两倍。空行离开汇编模式。

脚本执行G这两条汇编指令。

然后,调试脚本将读取的相同内容减去两个字节的长度,将W写回文件。最后退出Q调试。

此代码仅适用于小于64kB的文件。对于较大的文件,您需要扩展汇编代码,在递减CX以递减BX之后检查进位标志。

有关更多信息,请阅读DEBUG /?,然后尝试使用DEBUG和?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6254067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档