为了账号安全,请及时绑定邮箱和手机立即绑定

Windows命令转换Unix行尾?

Windows命令转换Unix行尾?

烙印99 2019-12-27 15:15:22
是否有Windows命令来转换文件的行尾?我们test.bat需要运行一个启动服务器。我们使用Perforce,我们需要在工作空间中使用unix行尾。由于某些原因,我们不允许在工作区中将行尾更改为Windows。但是,服务器在Windows上运行。每次必须运行bat文件时,都在Notepad ++中打开它,然后选择“编辑”→“终止转换”→“ Windows”。有没有一种自动化的方法,这样我们每次与Perforce同步时都不需要手动更改行尾?提前致谢。
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

使用moreWindows NT和更高版本中包含的命令,实际上可以非常轻松地完成此操作。转换input_filename包含UNIX EOL(行尾)\n到output_filename其中包含的Windows EOL \r\n,只是这样做:


TYPE input_filename | MORE /P > output_filename

该more命令具有您可能不知道的其他格式设置选项。奔跑more/?学习其他more可以做什么。


查看完整回答
反对 回复 2019-12-27
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您可以在没有VBScript中的其他工具的情况下执行此操作:


Do Until WScript.StdIn.AtEndOfStream

  WScript.StdOut.WriteLine WScript.StdIn.ReadLine

Loop

将以上各行放入文件中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" |

  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)连接在一起。


查看完整回答
反对 回复 2019-12-27
?
holdtom

TA贡献1805条经验 获得超10个赞

我当时正在处理CRLF问题,所以我决定构建一个非常简单的转换工具(在NodeJS中):


这是NodeJS EOL转换器CLI


因此,如果您安装了带有npm的NodeJS,则可以尝试:


npm i -g eol-converter-cli

eolConverter crlf "**/*.{txt,js,java,etc}"

可以使用Glob regex(与shell中相同的regex)动态配置路径。


因此,如果可以使用NodeJS,它非常简单,可以集成此命令将整个工作区转换为所需的行尾。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 637 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信