get-content powershell命令行开关没有返回

时间:2014-02-07 16:20:19

标签: powershell powershell-v2.0

我试图在Powershell中将文件的内容作为十六进制,我使用以下内容:

get-content -encoding byte $fullFilePath | %{"{0:X2}" -f $_} | %{$hex = $hex + $_}

当我运行此脚本时,我没有收到错误,但它没有返回,它只是挂起。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

字符串连接将是严重的性能拖累。我转而使用stringbuilder:

$hex = New-Object System.Text.StringBuilder

get-content -encoding byte $fullFilePath | 
%{"{0:X2}" -f $_} | %{$hex.Append($_) > $null}

$hex = $hex.ToString()

使用125KB文件进行测试后,从串联切换到使用stringbuilder后,运行时间从58秒减少到12秒。

答案 1 :(得分:3)

如果你碰巧使用PowerShell Community Extensions,它有Format-Hex命令(别名fhex),例如:

get-content -encoding byte $fullFilePath | fhex