powershell字符串操作是否会增加垃圾字符?

时间:2012-02-16 07:18:37

标签: powershell powershell-v2.0

当我将$ string变量内容放入某个文本文件时,它会添加一些垃圾字符。例如,我在字符串中写一个实用程序名称,并将该字符串复制到文件中,如下所示。

$CodeCount+="ccount.exe"

$CodeCount | Out-file "C:\CodeCount.bat"

当我执行这个批处理文件时,它会通过在前面显示一些垃圾字符而失败。enter image description here

即使我尝试使用trim()但结果仍然相同。

如何避免在前面添加垃圾字符?

3 个答案:

答案 0 :(得分:8)

请勿使用默认表单中的out-file。使用set-content。或者在out-file中明确设置out-file -encoding ascii之类的编码。默认情况下,out-file使用utf16(实际上是ucs-2)编码,在许多应用程序(包括Hg,Git等版本控制系统)中不会将其视为纯文本,并添加您提到的“有趣”字符。

请注意,重定向>与out-file相同,会给您相同的结果。

答案 1 :(得分:2)

这是因为用于Out-file的标准编码是Unicode,它在文件的开头添加了一些BOM值(当您使用十六进制编辑器打开文件时,可以看到这些值)。要避免这些字节,请使用-encoding ASCII

$CodeCount | Out-file -encoding ascii "C:\CodeCount.bat"

答案 2 :(得分:2)

Out-File的默认编码是Little Endian Unicode。 cmd.exe无法正常使用此编码,因此请使用ASCII

Out-File -Encoding ASCII