批量删除文本文件的最后一个换行符 [英] Remove last new line character of text file in batch

查看:18
本文介绍了批量删除文本文件的最后一个换行符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含nany文本文件的目录,每个文本文件都包含一个URL。我想将包含换行符的每个URL写入一个文本文件。 因此,我创建了两个批处理文件:

job.bat:

@echo off
forfiles /m *.m3u /c "cmd /c output.bat @file"

output.bat:

@echo off
type %1 >> urls.txt
echo. >> urls.txt

当我运行job.bat时,所有URL都写入文本文件。

但有一个问题:在文本文件的结尾处,文本文件的结尾处将有一个新行,即使后面没有其他行。如何删除urls.txt结尾处的换行符?

Urls.txt应该如下所示:

job2.bat是这样的:

我无法插入urls.txt的屏幕快照,因为它需要滚动。但我可以告诉你,它包含所有URL,一个接一个,没有任何空格或换行符分隔。

可以找到确切的.m3u文件on a subpage of the homepage of a German radio station(以.m3u结尾)。因此,我不包含任何M3U文件的屏幕截图。

推荐答案

如果您只有几个文件(受URL的字符串长度限制,与变量环境的最大大小有关),并且您的URL不包含!字符(将被删除),您可能会这样做:

@Echo Off & SetLocal EnableExtensions EnableDelayedExpansion
For /F %%G In ('Copy /Z "%~f0" NUL') Do Set "cr=%%G" & (Set lf=^
% 0x0A %
)
Set "fl=" & For /F Delims^=^ EOL^= %%G In ('Type *.m3u') Do If Not Defined fl (
    Set "fl=%%G") Else Set "fl=!fl! %%G"
If Defined fl Set /P "=%fl: =!cr!!lf!%" 0<NUL 1> "urls.txt"

如果您的文件不包含行终止符或行结束符(我已确定它们似乎是一致的),则只需替换不同的字符或字符序列:

@Echo Off & SetLocal EnableExtensions EnableDelayedExpansion
For /F %%G In ('Copy /Z "%~f0" NUL') Do Set "cr=%%G" & (Set lf=^
% 0x0A %
)
Set "fl=" & For /F Delims^=^ EOL^= %%G In ('Type *.m3u') Do Set "fl=%%G"
If Defined fl Set /P "=%fl:3http:=3!cr!!lf!http:%" 0<NUL 1> "urls.txt"

这篇关于批量删除文本文件的最后一个换行符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆