> cat .\foo.txt
abc
> cat .\foo.txt | md5sum
c13b6afecf97ea6b38d21a8f5167fa1e *-
> md5sum foo.txt
b79545611b3be30f90a0d21ef69bca82 *foo.txt
cat
and md5sum
是 unix 端口(来自 Windows Git 发行版)。
这是我的真实用例的一个玩具示例,它将二进制数据通过管道传输到我无法更改的旧版 python 脚本。由于管道进行编码,二进制文件被损坏。
我尝试改变$OutputEncoding
, [Console]::OutputEncoding
并使用chcp
,一切都没有帮助(但也许我做得不对,这一切都非常复杂......)。
实用程序在PowerShell管道添加换行 https://stackoverflow.com/questions/28504847/powershells-pipe-adds-linefeed/32981504对我不起作用,因为它处理进程参数的方式(我需要将一些参数传递给遗留脚本,有些需要引用,但该实用程序接受所有参数作为一个字符串)
对我来说,最佳解决方案是告诉 powershell 完全关闭编码并像 unix/cmd 一样运行。
没有办法解决它,除了使用cmd
运行包括管道的命令:
cmd /c cat.exe .\foo.txt "|" md5sum
请注意,管道字符被引号引起来,因此它是由 cmd 而不是 powershell 解释的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)