【问题标题】:Powershell adds a new line in the end - how to prevent it?Powershell最后增加了一个新行 - 如何防止它?
【发布时间】:2017-03-15 13:37:59
【问题描述】:

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

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

这两个文件不相等! Powershell 添加了一个额外的新行。有没有办法阻止它这样做?

附言

我想这里的编码无关紧要,但在我的实际示例中,文件是带有 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 命令?也许有更简单的方法?

【问题讨论】:

  • 你有 PowerShell v5 吗?
  • @Matt Powershell v5 并不能避免使用Set-Content 添加换行符,我刚刚测试过。或者我不知道 PS5 是否还有其他问题?
  • Set-Content 有一个开关 -NoNewline 应该可以解决您的目的。你能试试看吗

标签: powershell newline


【解决方案1】:

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

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

从那时起,-NoNewLine 的开关被添加到像 Set-Content 这样的 cmdlet 中。因此,如果简单是您的最终游戏,那么它应该可以正常工作。此更改为lobbied from the Community over the last few years

如前所述,该开关也适用于 Out-FileAdd-Content

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多