Answers:
您可能需要安装第三方PE文件查看器,例如http://www.ucware.com/apev/index.htm
在gnome-exe-thumbnailer
脚本中,由Scott Ritchie建议:
wrestool --extract --raw --type=version inputfile.exe
提取版本信息,打印一些与UTF-16文本混合的二进制数据。该脚本通过以下方式将其转换为可读文本:
tr '\0, ' '\t.\0' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'
然后,总体命令为wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'
。
wrestool
提供了+1 icoutil
,从此以后就可以作为标准Debian软件包使用。
| hexdump -C
icoutils
软件包中。
作为使用tr和sed解析@ mechanical-snail解决方案的输出的一种替代方法,这是GNU 字符串和GNU grep版本:
$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1
FileVersion
Release 0.65
ProductVersion
Release 0.65
更新:
另一个选择是Phil Harvey 的exiftool的最新版本(它基于perl,如果您的发行版没有它,则可以在Linux上轻松安装,也可以在Mac和Windows上使用)。它具有许多格式选项。
# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe
File Version : Release 0.67
Product Version : Release 0.67
libimage-exiftool-perl
什么?
我刚刚发现自己如何使用该信息创建一个不错的python字典(我一直在四处张望,由于某种原因在这里受伤),并想在这里展示我的方法:
Github Gists-spookyahell / exe2version_info.py
'''Licensed under the MIT License :)'''
import pefile
import pprint
pe = pefile.PE('example.exe')
string_version_info = {}
for fileinfo in pe.FileInfo[0]:
if fileinfo.Key.decode() == 'StringFileInfo':
for st in fileinfo.StringTable:
for entry in st.entries.items():
string_version_info[entry[0].decode()] = entry[1].decode()
pprint.pprint(string_version_info)
我是根据麻省理工学院(MIT)许可授权的...可能有人觉得需要使用它创建有用的脚本或其他东西...
并参见Github Gists-spookyahell / peinfo.py,以了解在另一个脚本中此方法的示例实现...