powershell - Powershell中的Out-File -append不会产生新行,并且会将字符串分成字符

标签 powershell powershell-2.0

我正在尝试了解此cmdlet的某些奇怪行为。

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

所以:

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

将产生:
这是一个测试

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

我还将注意到重复命令只会以相同的方式附加到同一行。我猜它不能识别换行符或换行符终止符或由于编码更改而引起的错误?

最佳答案

Out-File默认为unicode编码,这就是为什么您看到自己的行为的原因。使用-Encoding Ascii更改此行为。就你而言

Out-File -Encoding Ascii -append textfile.txt. 
Add-Content使用Ascii,并且默认情况下还会附加。
"This is a test" | Add-Content textfile.txt.

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

关于powershell - Powershell中的Out-File -append不会产生新行,并且会将字符串分成字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413264/

相关文章:

powershell - 如何在 powershell 中使用 GetWindowText API 函数?

networking - Powershell 在当前服务器上创建共享 - 授予用户/组权限

powershell - 如何将哈希表名称和值导出到 Excel 列中?

powershell - 如何获取远程计算机的磁盘容量和可用空间

PowerShell New-TimeSpan 友好地显示为天(s)小时(s)分钟(s)秒(s)

json - 如何使用 Powershell 将 JSON 对象保存到文件中?

xml - 列出子节点meta包含某个值123456的所有节点

regex - Powershell正则表达式删除 key 以外的所有内容

远程写入文件时,网络共享上的 Powershell System.IO.FileSystemWatcher 不起作用

c# - 通过 C# 代码的 Powershell 命令