Powershell中的Out-File -append不会生成新行并将字符串分解为字符

时间:2014-12-11 00:16:01

标签: powershell powershell-v2.0

我试图了解这个cmdlet的一些奇怪的行为。

如果我在我创建的文本文件中使用“Out-File -append Filename.txt”并通过windows上下文菜单输入文本,则该字符串将附加到该文件中的最后一行,作为一系列空格分隔字符。

所以:

"This is a test" | out-file -append textfile.txt

会产生: 我是一个人

如果out-file创建文件,或者文本文件在追加之前没有文本,则不会发生这种情况。为什么会这样?

我还要注意,重复命令只会以相同的方式附加到同一行。我想它不会识别换行符或换行符终止符或由于编码改变而导致的东西?

2 个答案:

答案 0 :(得分:20)

Out-File默认为unicode编码,这就是您看到自己行为的原因。使用-Encoding Ascii更改此行为。在你的情况下

Out-File -Encoding Ascii -append textfile.txt. 

Add-Content使用Ascii,默认情况下也会附加。

"This is a test" | Add-Content textfile.txt.

至于缺少换行符:您没有发送换行符,因此不会将其写入文件。

答案 1 :(得分:0)

“添加内容”是默认的ASCII码,并添加了新行,但是“添加内容”也带来了锁定文件的问题。