Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件&x2B;将LF转换为CR+;LF_Batch File_Batch Processing - Fatal编程技术网

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"