Windows命令转换Unix行尾?

是否有Windows命令来转换文件的行尾?


我们test.bat需要运行一个启动服务器。我们使用Perforce,我们需要在工作空间中使用unix行尾。由于某些原因,我们不允许在工作区中将行尾更改为Windows。但是,服务器在Windows上运行。


每次必须运行bat文件时,都在Notepad ++中打开它,然后选择“编辑”→“终止转换”→“ Windows”。有没有一种自动化的方法,这样我们每次与Perforce同步时都不需要手动更改行尾?


提前致谢。


烙印99
浏览 646回答 3
3回答

Qyouu

使用moreWindows NT和更高版本中包含的命令,实际上可以非常轻松地完成此操作。转换input_filename包含UNIX EOL(行尾)\n到output_filename其中包含的Windows EOL \r\n,只是这样做:TYPE input_filename | MORE /P > output_filename该more命令具有您可能不知道的其他格式设置选项。奔跑more/?学习其他more可以做什么。

白猪掌柜的

您可以在没有VBScript中的其他工具的情况下执行此操作:Do Until WScript.StdIn.AtEndOfStream&nbsp; WScript.StdOut.WriteLine WScript.StdIn.ReadLineLoop将以上各行放入文件中unix2dos.vbs,然后像这样运行:cscript //NoLogo unix2dos.vbs <C:\path\to\input.txt >C:\path\to\output.txt或像这样:type C:\path\to\input.txt | cscript //NoLogo unix2dos.vbs >C:\path\to\output.txt您也可以在PowerShell中执行此操作:(Get-Content "C:\path\to\input.txt") -replace "`n", "`r`n" |&nbsp; Set-Content "C:\path\to\output.txt"可以进一步简化为:(Get-Content "C:\path\to\input.txt") | Set-Content "C:\path\to\output.txt"上面的语句无需显式替换即可工作,因为Get-Content在任何类型的换行符(CR,LF和CR-LF)中隐式地拆分了输入文件,并Set-Content在将输入数组写入Windows之前将其与Windows换行符(CR-LF)连接在一起。

holdtom

我当时正在处理CRLF问题,所以我决定构建一个非常简单的转换工具(在NodeJS中):这是NodeJS EOL转换器CLI因此,如果您安装了带有npm的NodeJS,则可以尝试:npm i -g eol-converter-clieolConverter crlf "**/*.{txt,js,java,etc}"可以使用Glob regex(与shell中相同的regex)动态配置路径。因此,如果可以使用NodeJS,它非常简单,可以集成此命令将整个工作区转换为所需的行尾。
打开App,查看更多内容
随时随地看视频慕课网APP