我有一个.txt文件,我需要摆脱最后一个换行符。 在十六进制编辑器中查看文件时,它在末尾显示“0d 0a”。批处理:删除文本文件末尾的换行符?
我已经看了线程How to delete Linefeed using batch file,但没有帮助。 我试过COPY source target /b
这也没有帮助。
不幸的是我不能使用Java或任何第三方工具,我需要使用批处理文件。
有没有人有一个想法如何在最后摆脱那个换行?
非常感谢和问候, 彼得
我有一个.txt文件,我需要摆脱最后一个换行符。 在十六进制编辑器中查看文件时,它在末尾显示“0d 0a”。批处理:删除文本文件末尾的换行符?
我已经看了线程How to delete Linefeed using batch file,但没有帮助。 我试过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
和?
可能重复(http://stackoverflow.com [如何使用批处理文件删除换行]/questions/3116022 /如何删除换行使用批处理文件) – CharlesB 2011-06-06 15:46:37
为什么不链接的问题工作? – CharlesB 2011-06-06 15:46:54
@CharlesB:我真的不知道。当我在(inputfile.txt)中运行'for/f“delims = tokens = *”%% x do echo %% x >> outputfile.txt'时,它给了我相同的输出 - 最后一个换行符仍然存在。有没有其他方法可以解决这个问题? – Peter 2011-06-07 06:40:36