Powershell 为什么附加到文件中会插入空格(NUL)

Powershell 为什么附加到文件中会插入空格(NUL),powershell,Powershell,我正在运行这个命令 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文件中,并运行它,它将复制内容,但在每个字符

我正在运行这个命令

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)

它为什么要这样做?如何防止它?

在PowerShell中,
>
分别是
输出文件
输出文件-追加
的缩写。使用(特别是little endian UTF-16)作为其默认编码。使用这种编码,每个字符由2个字节而不是1个字节表示。对于ASCII字符(块中的字符),第一个字节的值为0


从CMD运行
powershell Get Content generated\no_animate.css>>generated\all.css
时使用,而不是powershell,后者不会将文本转换为Unicode

如果要使用PowerShell且输入文件为ascii编码,请使用(PowerShell v3或更新版本中提供):

或使用显式编码输出文件

Get-Content generated\no_animate.css |
    Out-File generated\all.css -Append -Encoding Ascii
在PowerShell中,
>
分别是
输出文件
输出文件-追加
的缩写。使用(特别是little endian UTF-16)作为其默认编码。使用这种编码,每个字符由2个字节而不是1个字节表示。对于ASCII字符(块中的字符),第一个字节的值为0


从CMD运行
powershell Get Content generated\no_animate.css>>generated\all.css
时使用,而不是powershell,后者不会将文本转换为Unicode

如果要使用PowerShell且输入文件为ascii编码,请使用(PowerShell v3或更新版本中提供):

或使用显式编码输出文件

Get-Content generated\no_animate.css |
    Out-File generated\all.css -Append -Encoding Ascii

它将输出文件写入Unicode(UCS-2或UTF-16)。为什么不直接使用
copy foo.css bar.css
?copy正在覆盖文件,我想将
foo.css
的内容附加到
bar.css
的末尾。我略过了
>
。我的错误。它将输出文件写入Unicode(UCS-2或UTF-16)。为什么不直接使用
copy foo.css bar.css
?copy正在覆盖文件,我想将
foo.css
的内容附加到
bar.css
的末尾。我略过了
>
。我的问题。当我尝试此操作时,我得到的是
powershell Get Content generated\no_animate.css | Add Content generated\all。css“Add Content”不被识别为内部或外部命令、可操作程序或批处理文件。
。因此,我从一个.ps1文件中尝试了它,但没有出错,但这两个文件和带有显式编码的命令都添加了NUL空格。我尝试从cmd行和.ps1文件中获取powershell版本,结果显示3.0.-1.-1似乎我需要不同的编码。当我使用
Get Content generated\no_animate.css | Out File generated\all.css-Append-Encoding OEM
将其设置为OEM时,它不再插入空值。
powershell Get Content generated\no_animate.css | Add Content generated\all.css
正在从CMD运行
|
是CMD中的管道。因此,您让PowerShell读取文件的内容,将其交给CMD,后者将其导入一个不存在的命令
addcontent
。因此你观察到的错误是有道理的,那么你如何让鲍威尔处理整行,引号不起作用,括号也不起作用。我撒谎,单引号不起作用,双引号起作用。我是一个shell新手。当我尝试这个时,我得到的是
powershell获取生成的内容\no\u animate.css |添加生成的内容\all。css“添加内容”不被识别为内部或外部命令、可操作的程序或批处理文件。
。因此,我从一个.ps1文件中尝试了它,但没有出错,但这两个文件和带有显式编码的命令都添加了NUL空格。我尝试从cmd行和.ps1文件中获取powershell版本,结果显示3.0.-1.-1似乎我需要不同的编码。当我使用
Get Content generated\no_animate.css | Out File generated\all.css-Append-Encoding OEM
将其设置为OEM时,它不再插入空值。
powershell Get Content generated\no_animate.css | Add Content generated\all.css
正在从CMD运行
|
是CMD中的管道。因此,您让PowerShell读取文件的内容,将其交给CMD,后者将其导入一个不存在的命令
addcontent
。因此你观察到的错误是有道理的,那么你如何让鲍威尔处理整行,引号不起作用,括号也不起作用。我撒谎,单引号不起作用,双引号起作用。老兄,我真是个菜鸟。