我正在尝试了解此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/