批处理文件+将LF转换为CR + LF

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理文件+将LF转换为CR + LF相关的知识,希望对你有一定的参考价值。

我们有一个名为LineFeed.sh的shell脚本文件,它具有将换行符(LF)转换为回车符+ LineFeed的功能。我们希望在Windows中通过批处理文件完成相同的操作。可能吗?

Linux shell文件

E_WRONGARGS=65
cat OutputList|while read -r Line 
do 
if [ -z "$Line" ]
then
echo "Usage: `basename $0` filename-to-convert"
exit $E_WRONGARGS
fi
NEWFILENAME=$Line.unx
CR='15'  # Carriage return.
       # 015 is octal ASCII code for CR.
       # Lines in a DOS text file end in CR-LF.
       # Lines in a UNIX text file end in LF only.
tr -d $CR < $1 > $NEWFILENAME // here its deleting CR but i need to append LF
# Delete CR's and write to new file.
done
echo "Original DOS text file is "$1"."
echo "Converted UNIX text file is "$NEWFILENAME"."
exit 0
答案

你可以在this Wikipedia page上找到一种方法:

TYPE unix_file | FIND "" /V > dos_file

请记住,您无法将输出重定向到您正在读取的同一文件。这几乎适用于所有系统和shell,因此需要额外的重命名。

这里的关键是type知道如何读取LF行结尾,然后find将它们转换为CRLF。单独的type不会对输出做任何事情(它应该是,因为有一个命令只是转储文件内容弄乱它们并不好:-))。

另一答案

基于通常使用type命令执行此操作的方法,您还可以转换所有文件(或您喜欢的任何通配符)并使用以下内容将它们转储到临时文件夹中:

md temp
for %a in (*.*) do type "%a" | find /v "" > temp"%a"

如果一般的想法是替换原件,那么您只需将文件移回临时位置并删除临时文件夹即可

以上是关于批处理文件+将LF转换为CR + LF的主要内容,如果未能解决你的问题,请参考以下文章

CR, LF, CR/LF 回车 换行

CR, LF, CR/LF 回车 换行

Tibco Designer -- 换行符LF转CR/LF

CR LF CR/LF

IDEA换行CRLF, LF, CR的解释和默认设置

将 CR/LF 插入文本区域