尝试将文件从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 }
与其使用-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
开关。
好吧,部分问题是您将字符串管道传输到Set-Content
,然后尝试使用该字符串来确定保存文件的位置。尝试将最后一部分从:
$x -replace "`r`n","`n" | set-content -NoNewline -path $_.fullname
对此:
set-content -NoNewline -path $_.fullname -value ($x -replace "`r`n","`n")
如果这没有像您期望的那样更新格式,您可能需要使用-Encoding
参数进行Set-Content
。不过,我对编码并不熟悉,所以我不确定。