Powershell最终增加了一条新线 - 如何防止它?

时间:2017-03-15 13:38:00

标签: powershell newline

考虑带有BOM编码文件的UTF8,我们称之为1.txt。接下来考虑以下文件:

Set-Content 2.txt $(cat 1.txt -Raw) -Encoding UTF8

这两个文件不相等! Powershell增加了一条新线。有没有办法阻止它这样做?

P.S。

我认为编码在这里并不重要,但在我的实际例子中,文件是带有BOM的UTF8,所以让我们保留它。

编辑1

找到以下帖子 - https://blogs.msdn.microsoft.com/jmanning/2007/05/23/powershell-gotcha-of-the-day-set-content-adds-newlines-by-default/

似乎答案是执行以下操作:

[io.directory]::SetCurrentDirectory($pwd)
[io.file]::WriteAllText("1.txt", $(cat 15786.sql -Raw), [text.encoding]::UTF8)
是吗?解决问题的最佳方法是不使用PowerShell Set-Content命令?也许有一种更简单的方法?

1 个答案:

答案 0 :(得分:3)

  

似乎答案是要做到以下几点......

在v5之前,这肯定是要避免这种情况。

从那时起,-NoNewLine的交换机已添加到Set-Content等cmdlet中。所以,如果简单是你的最终游戏应该工作得很好。此更改为lobbied from the Community over the last few years

如前所述,该切换也适用于Out-FileAdd-Content