使用Shell Folder
对象的GetDetailsOf
方法,可以获取扩展文件属性(如公司名称或产品名称)的脚本。该方法采用与扩展属性相关联的从零开始的索引号,并将属性值作为字符串返回。通常情况下,GetDetailsOf
可用于检索可以在详细的Shell视图中显示的任何类型的信息(查看 -> 选择详细信息)。请参阅检索扩展文件属性。
唯一的问题是不同版本的Windows提供不同的扩展文件属性集。例如,Windows XP有34个文件属性,Windows Vista有266个,Windows 7有284个。不仅属性索引可能不同,而且属性名称(Windows XP中的
Duration = Windows Vista中的
Length)也很令人困惑。要获取可用文件属性及其索引号的完整列表,请参见
this page或使用像这样的脚本:
var oShell = new ActiveXObject("Shell.Application");
var oFolder = oShell.Namespace("C:");
for (var i = 0; i < 300 /* some large number*/; i++)
WScript.Echo(i + " " + oFolder.GetDetailsOf(null, i));
无论如何,这里是在Windows Vista上执行您的任务的示例代码。我找不到“内部名称”属性(可能没有正确搜索),因此包括了“文件版本”和“产品版本”:
var COMPANY_NAME = 33;
var FILE_VERSION = 145;
var PRODUCT_NAME = 251;
var PRODUCT_VERSION = 252;
var oShell = new ActiveXObject("Shell.Application");
var oFolder = oShell.Namespace("C:\\Windows");
var oFile = oFolder.ParseName("notepad.exe");
WScript.Echo("Company name: " + oFolder.GetDetailsOf(oFile, COMPANY_NAME));
WScript.Echo("Product name: " + oFolder.GetDetailsOf(oFile, PRODUCT_NAME));
WScript.Echo("File version: " + oFolder.GetDetailsOf(oFile, FILE_VERSION));
WScript.Echo("Product version: " + oFolder.GetDetailsOf(oFile, PRODUCT_VERSION));
请注意,您可以使用
GetDetailsOf(null, property_index)
来获取特定于语言环境的属性名称(这在非英语Windows版本上非常有用):
WScript.Echo(oFolder.GetDetailsOf(null, COMPANY_NAME) + ": " + oFolder.GetDetailsOf(oFile, COMPANY_NAME));