Powershell和cmd

时间:2018-10-22 14:00:13

标签: node.js windows powershell cmd

我正在使用一个小的processconf.js工具从多个 .json 文件构建一个configuration.json文件。

这是我正在使用的命令:

node processconf.js file1.json file2.json > configuration.json 

我暂时使用cmd,但是今天我尝试使用Powershell,并以某种方式使用相同文件相同命令确实有不同的结果。

一个文件为 33kb (cmd),另一个为 66kb (powershell),查看它们具有完全相同的行,我看不到任何视觉差异, 这是为什么 ?

1 个答案:

答案 0 :(得分:5)

PowerShell默认为UTF16LE,而cmd默认情况下不对重定向进行Unicode处理(可能有时也会破坏数据)。

如果您未在PowerShell中使用重定向运算符,而是使用Out-File,则可以指定一种编码,例如

node processconf.js file1.json file2.json | Out-File -Encoding Utf8 configuration.json

我认为-Encoding Oemcmd的行为有些相同,但通常不支持Unicode,并且涉及转换。

重定向操作符当然没有规定任何选项的规定,因此,当您关心确切的输出格式时,它通常不是最佳选择。而且由于PowerShell与Unix Shell相反,处理对象,文本和随机二进制数据是非常不同的事情。

顺便说一下,如果您使用cmd运行cmd /u,您将得到相同的行为。