当我将$ string变量内容放入某个文本文件时,它会添加一些垃圾字符。例如,我在字符串中写一个实用程序名称,并将该字符串复制到文件中,如下所示。
$CodeCount+="ccount.exe"
$CodeCount | Out-file "C:\CodeCount.bat"
当我执行这个批处理文件时,它会通过在前面显示一些垃圾字符而失败。
即使我尝试使用trim()但结果仍然相同。
如何避免在前面添加垃圾字符?
答案 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