通过 TeamCity 执行时出现 dos2unix 格式转换错误

dos2unix format conversion error while execution through TeamCity

尝试将文件从 Windows 传输到 Unix Azure 环境时,出现错误 dos2unix 格式错误

dos2unix -o /xyz/home/ABC_efg.txt 执行 dos2unix 格式更改失败。

我尝试 运行 PS 脚本来修复它,但似乎确实有效。

Get-ChildItem -File -Recurse *.txt | % { $x = get-content -raw -path $_.fullname; $x -replace "`r`n","`n" | set-content -NoNewline -path $_.fullname }

嗯,问题的一部分是您将字符串传输到 Set-Content,然后尝试使用该字符串来确定文件的保存位置。尝试更改最后一部分:

$x -replace "`r`n","`n" | set-content -NoNewline -path $_.fullname

对此:

set-content -NoNewline -path $_.fullname -value ($x -replace "`r`n","`n")

如果没有像您期望的那样更新格式,您可能需要为 Set-Content 使用 -Encoding 参数。不过我对编码不是很熟悉,所以我不确定。

而不是使用 -replace,我更愿意将内容读取为字符串数组并将这些字符串与“`n”连接起来。
像这样:

$files = Get-ChildItem -File -Recurse -Filter '*.txt' | Select-Object -ExpandProperty FullName
$files | ForEach-Object { 
    (Get-Content -Path $_) -join "`n" | Set-Content -Path $_ -NoNewline -WhatIf
}

如果您对控制台中显示的输出感到满意,请移除 -WhatIf 开关。