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

BSA*_*AFH 10 powershell powershell-2.0

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

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

所以:

"This is a test" | out-file -append textfile.txt
Run Code Online (Sandbox Code Playgroud)

会产生:T hisisatest

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

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

Mat*_*att 22

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

Out-File -Encoding Ascii -append textfile.txt. 
Run Code Online (Sandbox Code Playgroud)

Add-Content 使用Ascii并默认添加.

"This is a test" | Add-Content textfile.txt.
Run Code Online (Sandbox Code Playgroud)

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

  • @GideonSassoon `Add-Content` 还支持 `-Encoding` 参数。 (2认同)