我有一个 .txt 文件,我需要在其中删除最后一个换行符。在 HEX 编辑器中查看文件,最后会显示“0d 0a”。
我查看了线程如何使用批处理文件删除换行但没有帮助。我试过COPY source target /b
了也没有帮助。
不幸的是,我不能使用 Java 或任何第三方工具,我需要使用批处理文件。
我怎样才能摆脱最后的换行符?
我有一个 .txt 文件,我需要在其中删除最后一个换行符。在 HEX 编辑器中查看文件,最后会显示“0d 0a”。
我查看了线程如何使用批处理文件删除换行但没有帮助。我试过COPY source target /b
了也没有帮助。
不幸的是,我不能使用 Java 或任何第三方工具,我需要使用批处理文件。
我怎样才能摆脱最后的换行符?
使用批处理应该可以。
@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 附加到每一行,但不附加到最后一行
尝试以下代码作为起点
@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
?