使用PowerShell获取文件的前x MB

8

要获取文本文件的前x行非常简单,但我需要文件的前x MB。鉴于我是PowerShell新手,如果您能为脚本提供一些注释,那将不胜感激。


1
这个对我很有用。而且它不像“get-content”一样遍历整个文件,所以对于大文件来说非常方便。 - sancho.s ReinstateMonicaCellio
2个回答

15
Get-Content foo.exe -TotalCount 1MB -Encoding byte

如果您正在使用 PowerShell Community Extensions,那么请执行以下操作:

Format-Hex foo.exe -count 1MB

注意:如果您正在使用 PowerShell V2,请确保获取 PSCX 的 1.2 beta 版本。


3

与PowerShell无关,我会使用head命令。(这是标准的Unix命令,但是它也适用于Windows。) -c选项让您指定所需的字节数。

head -c 1024 foo.exe

14
我讨厌问PowerShell问题的原因之一是因为会得到显而易见的“你可以用Unix做到...”这样的答案。虽然有很多非PowerShell的方法可以得到我想要的结果,但我还是想要一个PowerShell的答案。 - Ralph Shillington
我不明白为什么有人会将解决方案限制在PowerShell上,当有一些解决方案可以在任何地方使用,而不仅仅是在PowerShell中。除非只是出于好奇心:“哎呀,我想知道我能不能在PowerShell中做到这一点。”你没有说它必须是PowerShell专用的解决方案。我想你只是坐在PS提示符前,想知道如何获取文件的前N个字节。答案与你坐在任何其他提示符前的情况相同,也不是Unix解决方案。 - Rob Kennedy
5
也许有一天你不想读取文件的前1 KiB,而是从二进制注册表键中进行读取。此外,由于过于习惯于以老式的方式进行操作,因此在新技术上可能会错过一些东西。您不会建议Powershell用户在wmic输出上使用sed/awk,对吧?另外,head(不是一个cmdlet)将生成一个string[],这可能不是您想要的。 - Joey
5
重要的是要认识到,通常有些情况下机器被锁定以至于你不能安装新软件,但你可以运行 PowerShell。这是“需要 PowerShell,但不能使用转移的Unix可执行文件”的一个好案例。 - djsadinoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接