【问题标题】:PowerShell Out-File outputs extra spaces in between charactersPowerShell Out-File 在字符之间输出额外的空格
【发布时间】:2021-02-01 08:24:22
【问题描述】:

我正在使用一个简单的脚本,它在日志文件中输出当前目录的路径:

(Get-Item .).FullName | out-file "C:\windows\system32\rcwm\rc.log" -append

这在大多数情况下都有效。然而,看似随机的追加将导致在输出字符串中的每个字符后添加空格。我的rc.log 文件将如下所示:

C:\Users\root\Desktop\2222
C : \ U s e r s \ r o o t \ D e s k t o p \ 2 2 2 2 

注意我两次输出相同的目录名,日志文件里面的结果是不同的。

一旦发生这种情况,附加到日志文件中的每个后续字符串的字符之间都会有空格。

可能是什么问题?

【问题讨论】:

  • 你为什么要使用 Get-Item 这个 vs [(Get-ChildItem -Path C:\ -Directory).FullName]?这种用例不需要编码。
  • 因为我需要的是当前目录的路径,而不是子目录的路径。

标签: string powershell encoding character-encoding output


【解决方案1】:

一段时间后,我决定尝试更改 powershell 在我的日志文件中输出字符串的编码。

我仍然不明白 powershell 为什么或如何决定使用哪种编码,但最好让 powershell 知道您要使用哪种编码:

(Get-Item .).FullName | out-file "C:\windows\system32\rcwm\rc.log" -append -Encoding UTF8

对我来说,UTF-8 似乎效果最好。

C:\Users\root\šč   (UTF8)
C:\Users\root\??   (ASCII)
C : \ U s e r s \ r o o t \ a   (UNICODE)
 C   :   \   U   s   e   r   s   \   r   o   o   t   \   a   (UTF32)
C:\Users\root\šč\ő\~2\üē (UTF8)

猜你喜欢
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 2017-06-28
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多