Batch file 批处理文件&x2B;将LF转换为CR+;LF
我们有一个名为Batch file 批处理文件&x2B;将LF转换为CR+;LF,batch-file,batch-processing,Batch File,Batch Processing,我们有一个名为LineFeed.sh的shell脚本文件,它执行将换行(LF)转换为回车+换行的功能。我们希望通过windows中的批处理文件执行相同的操作。可能吗 Linux外壳文件 E_错误参数=65 cat输出列表|读取时-r行 做 如果[-z“$Line”] 然后 echo“用法:`basename$0`要转换的文件名” 退出$E_错误参数 fi NEWFILENAME=$Line.unx CR='\015'#回车。 #015是CR的八进制ASCII码。 #DOS文本文件中的行以CR-L
LineFeed.sh
的shell脚本文件,它执行将换行(LF
)转换为回车+换行的功能。我们希望通过windows中的批处理文件执行相同的操作。可能吗
Linux外壳文件
E_错误参数=65
cat输出列表|读取时-r行
做
如果[-z“$Line”]
然后
echo“用法:`basename$0`要转换的文件名”
退出$E_错误参数
fi
NEWFILENAME=$Line.unx
CR='\015'#回车。
#015是CR的八进制ASCII码。
#DOS文本文件中的行以CR-LF结尾。
#UNIX文本文件中的行仅以LF结尾。
tr-d$CR<$1>$NEWFILENAME//这里是删除CR,但我需要附加LF
#删除CR并写入新文件。
完成
echo“原始DOS文本文件为\“$1\”
echo“转换的UNIX文本文件为\“$NEWFILENAME\”
出口0
您可以在以下位置找到一种方法:
请记住,您不能将输出重定向到正在读取的同一文件。这几乎适用于所有系统和shell,因此需要进行额外的重命名
这里的关键是
type
知道如何读取左前行结尾,然后find
将它们转换为CRLF<代码>类型本身不会对输出做任何事情(应该这样做,因为使用一个命令简单地转储文件内容并将其弄乱是不好的:-)。在使用类型
命令进行此操作的一般方法的基础上,您还可以转换所有文件(或任何您喜欢的通配符)并使用以下命令将其转储到临时文件夹中:
md temp
for %a in (*.*) do type "%a" | find /v "" > temp\"%a"
如果一般的想法是替换原始文件,那么您只需将文件移回临时位置并删除临时文件夹@Heinzi:@Johannes:实际上,我的评论不仅仅是用谷歌搜索问题,还包含了一个答案。是的,我过于简洁;详细的版本是:“你不需要自己做这件事;有一个名为unix2dos的脚本,它可以完全满足你的需要,并且有可用的Windows端口,通常称为
unix2dos.bat
。如果你在谷歌上搜索这个关键字,你会找到很多源代码来下载它。”(不过,我还是明白你的意思,谢谢你的链接。)可能重复的
md temp
for %a in (*.*) do type "%a" | find /v "" > temp\"%a"