> cat .\foo.txt
abc
> cat .\foo.txt | md5sum
c13b6afecf97ea6b38d21a8f5167fa1e *-
> md5sum foo.txt
b79545611b3be30f90a0d21ef69bca82 *foo.txt
cat
和md5sum
是unix端口(來自Windows Git發行版)。如何擺脫PowerShell的編碼地獄?
這是一個用於我的真實用例的玩具示例,它將二進制數據傳輸到舊式Python腳本,我無法更改。由於管道正在進行編碼,因此二進制文件已損壞。
我試着改變$OutputEncoding
,[Console]::OutputEncoding
和使用chcp
,都沒有幫助(但也許我沒有做得對,這是非常複雜的......)。
PowerShell's pipe adds linefeed中的實用程序不適用於我,因爲它如何處理進程參數(我需要將某些參數傳遞給舊腳本,有些需要引用,但實用程序接受所有參數爲一個字符串)
最好的解決方案,讓我以某種方式告訴powershell完全關閉編碼,只是表現爲unix/cmd。
請勿使用管道並將該文件指定爲md5sum的參數?或者使用非對象管道:'cmd/c cat。\ foo.txt「|」 md5sum' - 注意管道符號周圍的引號。 – wOxxOm
我寫道,我給了一個玩具的例子,我的實際使用案例是一個腳本,必須接受來自stdin的輸入,我不能改變它。我已經嘗試了cmd/c,但它有問題與qouting,我會再試一次 – IttayD
@wOxxOm:它終於與cmd一起工作,但我希望我可以使用PS – IttayD