【问题标题】:dos2unix format conversion error while execution through TeamCity通过 TeamCity 执行时出现 dos2unix 格式转换错误
【发布时间】:2019-12-14 23:36:59
【问题描述】:

在尝试将文件从 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 }

【问题讨论】:

  • 感谢@Theo 的帮助,我能够按照您的建议使用 -replace 解决问题。
  • 感谢您的反馈!

标签: windows azure powershell teamcity dos2unix


【解决方案1】:

我宁愿不使用-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 开关。

【讨论】:

    【解决方案2】:

    嗯,问题的一部分是您将字符串传递给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 参数。不过我对编码不是很熟悉,所以我不确定。

    【讨论】:

    • 我尝试替换最后一部分,但输出行为与预期不符。将尝试探索编码,因为我也不熟悉它。感谢您的建议@TheMadTechnician
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2018-09-22
    • 2018-06-15
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多