我正在运行此命令
Get-Content generated\no_animate.css >> generated\all.css
我想将no_animate.css
的内容附加到all.css
。
如果我从cmd提示符这样运行它,这是有效的:
powershell Get-Content generated\no_animate.css >> generated\all.css
如果我将完全相同的代码放入.ps1文件并运行它正在复制内容,但在每个字符之间插入空格(在texteditor中表示为NUL)。
为什么要这样做?我该如何预防?
答案 0 :(得分:2)
在PowerShell中,redirection operators >
和>>
分别是Out-File
和Out-File -Append
的缩写。 Out-File
使用Unicode(特别是小端UTF-16)作为其默认编码。使用此编码,每个字符由2个字节而不是1个字节表示。对于ASCII字符(basic latin块中的字符),第一个字节的值为0.
从CMD运行powershell Get-Content generated\no_animate.css >> generated\all.css
使用CMD redirection operator而不是PowerShell,而不会将文本转换为Unicode。
如果您想使用PowerShell并且输入文件是ascii编码,请使用Add-Content
(在PowerShell v3或更新版本中提供):
Get-Content generated\no_animate.css | Add-Content generated\all.css
带有明确编码的或Out-File
。
Get-Content generated\no_animate.css |
Out-File generated\all.css -Append -Encoding Ascii